什么是Taint ? An extension used for detecting XSS codes(tainted string), And also can be used to spot sql injection vulnerabilities, shell inject, etc.

经过我实际测试, 能检测出实际的一些开源产品的(别问是什么)隐藏的 XSS code, SQL 注入, Shell 注入等漏洞, 并且这些漏洞如果要用静态分析工具去排查, 将会非常困难, 比如对于如下的例子:

<?php$name = $_GET["name"];$value = strval($_GET["tainted"]);echo $$name;

对于请求:

http://****.com/?name=value&tainted=xxx

静态分析工具, 往往无能为力, 而 Taint 却可以准确无误的爆出这类型问题.

Warning: main() [function.echo]:Attempt to echo a string that might be tainted in %s.php on line %d

附录:
A. Tainted String

所有来自$_GET, $_POST, $_COOKIE的变量, 都被认为是 Tainted String

B. taint 检测的函数/语句列表, 当这些函数使用 tainted string 参数的时候, taint 会给出警告:

  • 输出函数/语句系列
echo
print
printf
file_put_contents
  • 文件系统函数
fopen
opendir
basename
dirname
file
pathinfo
  • 数据库系列函数/方法
mysql_query
mysqli_query
sqlite_query
sqlite_single_query
oci_parse
Mysqli::query
SqliteDataBase::query
SqliteDataBase::SingleQuery
PDO::query
PDO::prepare
  • 命令行系列
system
exec
proc_open
passthru
shell_exec
  • 语法结构
eval
include(_once)
require(_once)

C. 消除 tainted 信息的函数, 调用这些函数以后, tainted string 就会变成合法的string:

escapeshellcmd
htmlspecialchars
escapeshellcmd
addcslashes
addslashes
mysqli_escape_string
mysql_real_escape_string
mysql_escape_string
sqlite_escape_string
PDO::quote
Mysqli::escape_string
Mysql::real_escape_string

D. 调用中保持 tainted 信息的函数/语句, 调用这些函数/语句时, 如果输入是 tainted strin g, 则输出也为 tainted string:

= (assign)
. (concat)
"{$var}" (variable substitution)
.= (assign concat)
strval
explode
implode
sprintf
vsprintf
trim(as of 0.4.0)
rtrim(as of 0.4.0)
ltrim(as of 0.4.0)

源码地址:
https://pecl.php.net/package/taint
https://github.com/laruence/taint/tree/taint-2.0.4

PHP Taint 一个用来检测 XSS/SQL/Shell 注入漏洞的扩展相关推荐

  1. php taint扩展,PHP Taint – 一个用来检测XSS/SQL/Shell注入漏洞的扩展

    作者: Laruence( 鸟哥  ) 之前, 小顿和我提过一个想法, 就是从PHP语言层面去分析,找出一些可能的注入漏洞代码. 当时我一来没时间, 而来也确实不知道从何处下手.. 直到上周的时候, ...

  2. php taint安装失败,PHP Taint – 一个用来检测XSS漏洞的扩展

    作者: Laruence 之前, 小顿和我提过一个想法, 就是从PHP语言层面去分析,找出一些可能的XSS漏洞代码. 当时我一来没时间, 而来也确实不知道从何处下手.. 直到上周的时候, 我看到了这个 ...

  3. Oracle数据库注入-墨者学院(SQL手工注入漏洞测试(Oracle数据库))

    本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(Oracle数据库). 地址:http://124.70.22.208:42948/new_list.php?id=1(注意地址已 ...

  4. 不为人知的动网7.1 SQL版注入漏洞

    文章难易度:★★★ 文章阅读点:动网7.1 SQL版最新注入漏洞的详细利用以及如何在后台获取Webshell 话说上期X档案刊登了动网8.0 SQL版最新注入漏洞的文章,不知大家都掌握了没有,令人兴奋 ...

  5. 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)

    0x00 前言 我们都知道,SQL注入分数字型和字符型,我们上次讲的是最基本的数字型SQL注入,这次我们就来讲最基本的字符型SQL注入.同样,如果是明白原理和方法的话,看懂这篇文章并不难,但是如果不清 ...

  6. 墨者学院01 SQL手工注入漏洞测试(MySQL数据库)

    问题描述 鉴于我已经两周没能成功运行攻防世界的靶场环境...于是昨天又搜了一些网站,感觉墨者学院的题目还可以~ SQL手工注入虽然是一个已经被安全博主讲烂的主题,但是我之前很少有从头到尾实践手工注入的 ...

  7. SQL手工注入漏洞测试(Oracle数据库)

    SQL手工注入漏洞测试(Oracle数据库) 0x01前言 本文旨在讲述Oracle数据库多种情况下如何进行注入 靶场地址:SQL手工注入漏洞测试(Oracle数据库)_SQL注入_在线靶场_墨者学院 ...

  8. 墨者学院刷题笔记——SQL手工注入漏洞测试(MongoDB数据库)

    今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL手工注入漏洞测试(MongoDB数据库). 一.题目简介 我们这里采用墨者学院的MongoDB数据库渗透测试题目,其地址为:https:/ ...

  9. SQLServer数据库注入-墨者学院(SQL手工注入漏洞测试(Sql Server数据库))

    本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(Sql Server数据库). 地址:http://219.153.49.228:42295/new_list.asp?id=2( ...

最新文章

  1. oracle em 双网卡,VirtualBox 双网卡配置
  2. 龙芯发布.NET 6.0.100开发者内测版
  3. python中excel制作成绩报表_python制作简单excel统计报表2之操作excel的模块openpyxl简单用法...
  4. 重温Elasticsearch
  5. “UNIX的名字是我起的”——对话UNIX开发者Brian W. Kernighan
  6. Oracle表删除大量数据后查询变慢问题
  7. 全宁对医药行业销售代表的介绍
  8. gitlab和github一起使用
  9. j$(function() j$(document).ready 区别
  10. 【图论】昂贵的聘礼(最短路变形)
  11. kylin_异常_02_java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf 解决办法
  12. BZOJ2005 [NOI2010]能量采集
  13. flutter ListView.separated使用
  14. ios微信组件跳转_iOSAPP跳转微信小程序
  15. 计算机临床医学自动化哪个好,这五个专业待遇高,就业好,但是很难学,挂科风险大,选择要慎重...
  16. 关于MybatisX别名报红问题
  17. 2010数据库大事记
  18. 解决安装调试gym出现UserWarning: WARN: The environment Humanoid-v2 is out of date.
  19. python中answer_Python初学之学生和老师的question和answer问题
  20. 最近发现的几个神奇CS学习网站

热门文章

  1. php declare 的语法详解
  2. Sha1加密是不可逆的,网上虽然有解密的方法,但只能解密很简单的密码
  3. SNIFF嗅探器原理
  4. Python3爬取免费小说网小说
  5. 编写一个AQI分析的Orange插件
  6. linux下sed正则表达式匹配批量替换文件中的内容
  7. ubuntu18.04 + windows10双系统使用rEFInd引导(安装rEFInd-minimal主题)
  8. 伯努利分布的最大似然估计与贝叶斯估计
  9. 将本地项目上传至git仓库的步骤
  10. Dreamweaver 8序列号(Windows系统)