标题: 使用 jhead 工具 分类: 工具 创建: 2024-02-27 22:18 修改: 链接: http://0x2531.tech/tools/202402272218.txt -------------------------------------------------------------------------------- 在安全编码文件上传功能时,一种方法是检测文件中包含的特定内容,如:JPEG 图片特有的文件头。这个时候如 果做安全测试,我们就需要既能往图片中插入 webshell,又不会破坏图片原本格式的辅助工具。jhead 就是能 胜任这类场景的工具。 比如:我们现在有一张名为 cat.jpg 的图片,需要往里面插入 PHP 一句话 webshell 代码。 首先,查看图片的基本信息,如:大小、尺寸等。 # ./jhead cat.jpg File name : cat.jpg File size : 156489 bytes File date : 2024:02:27 17:07:33 Resolution : 640 x 855 JPEG Quality : 87 接着,对图片文件“瘦身”,删除其中不必要的信息。 # ./jhead -purejpg cat.jpg 然后,编辑图片注释字段,这样既不会破坏图片格式和显示内容,又能插入 webshell 代码(作为演示,插入代 码 )。 # ./jhead -ce cat.jpg Modified: cat.jpg # grep 'phpinfo' cat.jpg Binary file cat.jpg matches # ./jhead cat.jpg File name : cat.jpg File size : 156529 bytes File date : 2024:02:27 17:07:33 Resolution : 640 x 855 JPEG Quality : 87 Comment : 可以看到 PHP 代码被成功的写入到图片注释字段。这个时候,我们将 cat.jpg 重命名为 cat.php,从文件格 式看,依然是有效的 JPEG 图片。如果应用程序只检测文件格式,未校验上传文件的扩展名,cat.php 就能被成 功上传。访问该 PHP 脚本,就会执行其中的 PHP 代码,造成远程代码执行的后果。 本文只介绍了向 JPEG 插入代码的应用,其它 jhead 工具的应用可查看官网:https://www.sentex.ca/ ~mwandel/jhead/。