当前位置:首页 > 黑客教程 > 正文内容

过滤掉尖括号xss(尖括号过滤绕过)

hacker3年前 (2022-05-31)黑客教程105

本文导读目录:

C语言 输入一个二元关系 要求:输出关系矩阵。 急急急急、、、请高手赐教!

用getchar()一个字符一个字符读入输入的二元关系,把多余的尖括号过滤掉,对输入的字符(可转化为数字)进行处理,对应到二维数组中,有关细则表标为1,没有关系则标为0,这样就生成了一个矩阵,最后输出就行了

在PHP的CI框架中,kindeditor自动过滤尖括号,怎么办?

你看看application/config/config.php 文件启用了 XSS 过滤

$config['global_xss_filtering'] = TRUE;

或者您 $this-input-post( 'c', TRUE );

都会自动过滤一些特殊附号的。

找人修复ASP网站XSS漏洞

Web开发常见的几个漏洞解决 ***

平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面的安全性就要求比较高了,所以往往会交付给一些专门做安全测试的第三方机构进行测试,然后根据反馈的漏洞进行修复,如果你平常对于一些安全漏洞不够了解,那么反馈的结果往往是很残酷的,迫使你必须在很多细节上进行修复完善。本文主要根据本人项目的一些第三方安全测试结果,以及本人针对这些漏洞问题的修复方案,介绍在这方面的一些经验,希望对大家有帮助。

基本上,参加的安全测试(渗透测试)的网站,可能或多或少存在下面几个漏洞:SQL注入漏洞、跨站脚本攻击漏洞、登陆后台管理页面、IIS短文件/文件夹漏洞、系统敏感信息泄露。

1、测试的步骤及内容

这些安全性测试,据了解一般是先收集数据,然后进行相关的渗透测试工作,获取到网站或者系统的一些敏感数据,从而可能达到控制或者破坏系统的目的。

之一步是信息收集,收集如IP地址、DNS记录、软件版本信息、IP段等信息。可以采用 *** 有:

1)基本 *** 信息获取;

2)Ping目标 *** 得到IP地址和TTL等信息;

3)Tcptraceroute和Traceroute 的结果;

4)Whois结果;

5)Netcraft获取目标可能存在的域名、Web及服务器信息;

6)Curl获取目标Web基本信息;

7)Nmap对网站进行端口扫描并判断操作系统类型;

8)Google、Yahoo、Baidu等搜索引擎获取目标信息;

9)FWtester 、Hping3 等工具进行防火墙规则探测;

10)其他。

第二步是进行渗透测试,根据前面获取到的数据,进一步获取网站敏感数据。此阶段如果成功的话,可能获得普通权限。采用 *** 会有有下面几种

1)常规漏洞扫描和采用商用软件进行检查;

2)结合使用ISS与Nessus等商用或免费的扫描工具进行漏洞扫描;

3)采用SolarWinds对 *** 设备等进行搜索发现;

4)采用Nikto、Webinspect等软件对Web常见漏洞进行扫描;

5)采用如AppDetectiv之类的商用软件对数据库进行扫描分析;

6)对Web和数据库应用进行分析;

7)采用WebProxy、SPIKEProxy、Webscarab、ParosProxy、Absinthe等工具进行分析;

8)用Ethereal抓包协助分析;

9)用Webscan、Fuzzer进行SQL注入和XSS漏洞初步分析;

10)手工检测SQL注入和XSS漏洞;

11)采用类似OScanner的工具对数据库进行分析;

12)基于通用设备、数据库、操作系统和应用的攻击;采用各种公开及私有的缓冲区溢出程序代码,也采用诸如MetasploitFramework 之类的利用程序 *** 。

13)基于应用的攻击。基于Web、数据库或特定的B/S或C/S结构的 *** 应用程序存在的弱点进行攻击。

14)口令猜解技术。进行口令猜解可以采用 X-Scan、Brutus、Hydra、溯雪等工具。

第三步就是尝试由普通权限提升为管理员权限,获得对系统的完全控制权。在时间许可的情况下,必要时从之一阶段重新进行。采用 ***

1)口令嗅探与键盘记录。嗅探、键盘记录、木马等软件,功能简单,但要求不被防病毒软件发觉,因此通常需要自行开发或修改。

2)口令破解。有许多著名的口令破解软件,如 L0phtCrack、John the Ripper、Cain 等

以上一些是他们测试的步骤,不过我们不一定要关注这些过程性的东西,我们可能对他们反馈的结果更关注,因为可能会爆发很多安全漏洞等着我们去修复的。

2、SQL注入漏洞的出现和修复

1)SQL注入定义:

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入有时候,在地址参数输入,或者控件输入都有可能进行。如在链接后加入’号,页面报错,并暴露出网站的物理路径在很多时候,很常见,当然如果关闭了Web.Config的CustomErrors的时候,可能就不会看到。

另外,Sql注入是很常见的一个攻击,因此,如果对页面参数的转换或者没有经过处理,直接把数据丢给Sql语句去执行,那么可能就会暴露敏感的信息给对方了。如下面两个页面可能就会被添加注入攻击。

①http://xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestD ... type='U' and status0)0 得到之一个用户建立表的名称,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现表的名称。假设发现的表名是xyz,则

②http://xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestDB.dbo.sysobjects ... tatus0 and name not in('xyz'))0 可以得到第二个用户建立的表的名称,同理就可得到所有用建立的表的名称。

为了屏蔽危险Sql语句的执行,可能需要对进行严格的转换,例如如果是整形的,就严格把它转换为整数,然后在操作,这样可以避免一些潜在的危险,另外对构造的sql语句必须进行Sql注入语句的过滤,如我的框架(Winform开发框架、Web开发框架等)里面就内置了对这些有害的语句和符号进行清除工作,由于是在基类进行了过滤,因此基本上子类都不用关心也可以避免了这些常规的攻击了。

/// summary

/// 验证是否存在注入代码(条件语句)

/// /summary

/// param name="inputData"/param

public bool HasInjectionData(string inputData)

if (string.IsNullOrEmpty(inputData))

return false;

//里面定义恶意字符 ***

//验证inputData是否包含恶意 ***

if (Regex.IsMatch(inputData.ToLower(), GetRegexString()))

return true;

else

return false;

/// summary

/// 获取正则表达式

/// /summary

/// returns/returns

private static string GetRegexString()

//构造SQL的注入关键字符

string[] strBadChar =

//"select\\s",

//"from\\s",

"insert\\s",

"delete\\s",

"update\\s",

"drop\\s",

"truncate\\s",

"exec\\s",

"count\\(",

"declare\\s",

"asc\\(",

"mid\\(",

"char\\(",

"net user",

"xp_cmdshell",

"/add\\s",

"exec master.dbo.xp_cmdshell",

"net localgroup administrators"

//构造正则表达式

string str_Regex = ".*(";

for (int i = 0; i strBadChar.Length - 1; i++)

str_Regex += strBadChar[i] + "|";

str_Regex += strBadChar[strBadChar.Length - 1] + ").*";

return str_Regex;

上面的语句用于判别常规的Sql攻击字符,我在数据库操作的基类里面,只需要判别即可,如下面的一个根据条件语句查找数据库记录的函数。

/// summary

/// 根据条件查询数据库,并返回对象 ***

/// /summary

/// param name="condition"查询的条件/param

/// param name="orderBy"自定义排序语句,如Order By Name Desc;如不指定,则使用默认排序/param

/// param name="paramList"参数列表/param

/// returns指定对象的 *** /returns

public virtual ListT Find(string condition, string orderBy, IDbDataParameter[] paramList)

if (HasInjectionData(condition))

LogTextHelper.Error(string.Format("检测出SQL注入的恶意数据, {0}", condition));

throw new Exception("检测出SQL注入的恶意数据");

以上只是防止Sql攻击的一个方面,还有就是坚持使用参数化的方式进行赋值,这样很大程度上减少可能受到SQL注入攻击。

Database db = CreateDatabase();

DbCommand command = db.GetSqlStringCommand(sql);

command.Parameters.AddRange(param);

3、跨站脚本攻击漏洞出现和修复

跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击。例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如scriptalert('这是一个页面弹出警告');/script这样的内容,如果在一些首页出现很多这样内容,而又不经过处理,那么页面就不断的弹框,更有甚者,在里面执行一个无限循环的脚本函数,直到页面耗尽资源为止,类似这样的攻击都是很常见的,所以我们如果是在外网或者很有危险的 *** 上发布程序,一般都需要对这些问题进行修复。

XSS代码攻击还可能会窃取或操纵客户会话和 Cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。

[建议措施]

清理用户输入,并过滤出 JavaScript 代码。我们建议您过滤下列字符:

[1] (尖括号)

[2] "(引号)

[3] '(单引号)

[4] %(百分比符号)

[5] ;(分号)

[6] ()(括号)

[7] ( 符号)

[8] +(加号)

为了避免上述的XSS代码攻击,解决办法是可以使用HttpUitility的HtmlEncode或者更好使用微软发布的AntiXSSLibrary进行处理,这个更安全。

微软反跨站脚本库(AntiXSSLibrary)是一种编码库,旨在帮助保护开发人员保护他们的基于Web的应用不被XSS攻击。

编码 ***

使用场景

示例

HtmlEncode(String)

不受信任的HTML代码。 a href=”http://www.cnblogs.com”Click Here [不受信任的输入]/a

HtmlAttributeEncode(String)

不受信任的HTML属性

hr noshade size=[不受信任的输入]

JavaScriptEncode(String)

不受信任的输入在JavaScript中使用

script type=”text/javascript”

[Untrusted input]

/script

UrlEncode(String)

不受信任的URL

a href=”http://cnblogs.com/results.aspx?q=[Untrusted input]”Cnblogs.com/a

VisualBasicScriptEncode(String)

不受信任的输入在VBScript中使用

script type=”text/vbscript” language=”vbscript”

[Untrusted input]

/script

XmlEncode(String)

不受信任的输入用于XML输出

xml_tag[Untrusted input]/xml_tag

XmlAttributeEncode(String)

不 受信任的输入用作XML属性

xml_tag attribute=[Untrusted input]Some Text/xml_tag

protected void Page_Load(object sender, EventArgs e)

this.lblName.Text = Encoder.HtmlEncode("scriptalert('OK');/SCRIPT");

例如上面的内容,赋值给一个Lable控件,不会出现弹框的操作。

但是,我们虽然显示的时候设置了转义,输入如果要限制它们怎么办呢,也是使用AntiXSSLibrary里面的HtmlSanitizationLibrary类库Sanitizer.GetSafeHtmlFragment即可。

protected void btnPost_Click(object sender, EventArgs e)

this.lblName.Text = Sanitizer.GetSafeHtmlFragment(txtName.Text);

这样对于特殊脚本的内容,会自动剔除过滤,而不会记录了,从而达到我们想要的目的。

4、IIS短文件/文件夹漏洞出现和修复

通过猜解,可能会得出一些重要的网页文件地址,如可能在/Pages/Security/下存在UserList.aspx和MenuList.aspx文件。

[建议措施]

1)禁止url中使用“~”或它的Unicode编码。

2)关闭windows的8.3格式功能。

修复可以参考下面的做法,或者找相关运维部门进行处理即可。

http://sebug.net/vuldb/ssvid-60252

http://webscan.360.cn/vul/view/vulid/1020

http://www.bitscn.com/network/security/200607/36285.html

5、系统敏感信息泄露出现和修复

如果页面继承一般的page,而没有进行Session判断,那么可能会被攻击者获取到页面地址,进而获取到例如用户名等重要数据的。

一般避免这种方式是对于一些需要登录才能访问到的页面,一定要进行Session判断,可能很容易给漏掉了。如我在Web框架里面,就是继承一个BasePage,BasePage 统一对页面进行一个登录判断。

public partial class UserList : BasePage

protected void Page_Load(object sender, EventArgs e)

/// summary

/// BasePage 集成自权限基础抽象类FPage,其他页面则集成自BasePage

/// /summary

public class BasePage : FPage

/// summary

/// 默认构造函数

/// /summary

public BasePage()

this.IsFunctionControl = true;//默认页面启动权限认证

/// summary

/// 检查用户是否登录

/// /summary

private void CheckLogin()

if (string.IsNullOrEmpty(Permission.Identity))

string url = string.Format("{0}/Pages/CommonPage/Login.aspx?userRequest={1}",

Request.ApplicationPath.TrimEnd('/'), HttpUtility.UrlEncode(Request.Url.ToString()));

Response.Redirect(url);

/// summary

/// 覆盖HasFunction *** 以使权限类判断是否具有某功能点的权限

/// /summary

/// param name="functionId"/param

/// returns/returns

protected override bool HasFunction(string functionId)

CheckLogin();

bool breturn = false;

try

breturn = Permission.HasFunction(functionId);

catch (Exception)

Helper.Alerts(this, "BasePage调用权限系统的HasFunction函数出错");

return breturn;

protected override void OnInit(EventArgs e)

Response.Cache.SetNoStore(); //清除缓存

base.OnInit(e);

CheckLogin();

否则可能会受到攻击,并通过抓包软件发现页面数据,获得一些重要的用户名或者相关信息。

还有一个值得注意的地方,就是一般这种不是很安全的 *** ,更好要求输入比较复杂一点的密码(强制要求),例如不能全部是数字密码或者不能是纯字符,对位数也要求多一点,因为很多人输入12345678,123456,123这样的密码,很容易被猜出来并登录系统,造成不必要的损失。

6、总结性建议

针对上面发现的问题,提出下面几条建议。

1)在服务器与 *** 的接口处配置防火墙,用于阻断外界用户对服务器的扫描和探测。

2)限制网站后台访问权限,如:禁止公网IP访问后台;禁止服务员使用弱口令。

3)对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL 或XSS特殊字符。这些检查或过滤必须在服务器端完成。

4)关闭windows的8.3格式功能。

5)限制敏感页面或目录的访问权限。

正则表达式取出文字过滤掉中间的字符比如:我是中国人我爱中国 取出我是中国人我爱中国 过滤字符

var str='我是中国人/span我爱中国 取出我是中国人我爱中国';

var result=str.replace(/[][/]?\w+[]/g,'');//result是替换了 标签的字符串

这是使用字符串的replace *** 以正则匹配替换掉标签

正则:/[][/]?\w+[]/g

/内容/:在JavaScript中表示这是一个正则表达式对象,其他语言内不需要//

[]:表示标签的开头尖括号

[/]?:表示可以有/符号也可以没有,目的是为了匹配开始标签和结束标签

     譬如:span内容/span,替换後只要【内容】

\w+:表示字符类(包括大小写字母,数字),如果你的标签内会有style="color:red;"的话建议改为.*,即:/[][/]?.*[]/g,其中 .* 表示任意字符任意长度

[]:标签的结束尖括号

/内容/g: 表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义:

1)对于表达式对象的exec *** ,不加入g,则只返回之一个匹配,无论执行多少次均是如此,如果加入g,则之一次执行也返回之一个匹配,再执行返回第二个匹配,依次类推。例如 

var regx=/user/d/; 

var str=“user18dsdfuser2dsfsd”; 

var rs=regx.exec(str);//此时rs的值为{user1} 

var rs2=regx.exec(str);//此时rs的值依然为{user1} 

如果regx=/user/d/g;则rs的值为{user1},rs2的值为{user2} 

通过这个例子说明:对于exec *** ,表达式加入了g,并不是说执行exec *** 就可以返回所有的匹配,而是说加入了g之后,我可以通过某种方式得到所有的匹配,这里的“方式”对于exec而言,就是依次执行这个 *** 即可。

2)对于表达式对象的test *** ,加入g于不加上g没有什么区别。

3)对于String对象的match *** ,不加入g,也只是返回之一个匹配,一直执行match *** 也总是返回之一个匹配,加入g,则一次返回所有的匹 配(注意这与表达式对象的exec *** 不同,对于exec而言,表达式即使加上了g,也不会一次返回所有的匹配)。例如: 

var regx=/user/d/; 

var str=“user1sdfsffuser2dfsdf”; 

var rs=str.match(regx);//此时rs的值为{user1} 

var rs2=str.match(regx);//此时rs的值依然为{user1} 

如果regx=/user/d/g,则rs的值为{user1,user2},rs2的值也为{user1,user2} 

4)对于String对象的replace *** ,表达式不加入g,则只替换之一个匹配,如果加入g,则替换所有匹配。(开头的三道测试题能很好的说明这一点) 

5)对于String对象的split *** ,加上g与不加g是一样的,即: 

var sep=/user/d/; 

var array=“user1dfsfuser2dfsf”.split(sep); 

则array的值为{dfsf, dfsf} 

此时sep=/user/d/g,返回值是一样的。 

6)对于String对象的search *** ,加不加g也是一样的。

渗透测试需要学那些知识?

web黑客渗透测试入门需要学哪些?

学习web渗透,就是从零散到整体。我们入门门槛比较低,学会用工具就可以了。但是从入门到另一个层次就比较难了,也是大部分脚本小子迷茫的地方。

在web渗透的核心那就是思路,大量的思路来源是来自于自己的知识积累和丰富的经验。 学而不思则罔思而不学则殆。

当我找到了一个注入点:

首先放进工具一点,工具提示不存在注入。很奇怪,明明是存在的,发个某大牛,某大你不想说话并向你扔了个链接,你发现居然爆出了帐号密码。

太多的人都是处于这个超级小白阶段,这个阶段处于菜鸟阶段,我称为打哪是哪。

我来问问:

brup suite你会用?你会用来做什么,爆破?你知道怎么抓包分析post注入吗?你知道绕过上传时brup suite的神奇之处吗?

sqlmap 你会用?你会用来做什么,-u?-dbs?你知道怎么在sqlmap中执行sql语句吗?你知道sqlmap怎么反弹shell吗?

xss 你都懂?你知道xss平台那么多模块都有什么妙用吗?你知道尖括号过滤都有哪些绕过方式吗?

入门学习思考 可能遇到的问题 和新手需知:

你知道svn源代码泄露是什么?通过审计代码能做到什么吗?

你知道在发现st2漏洞命令执行时出现目录限制的时候怎么突破吗?有多少种方式可以突破,在什么样的场景下容易出现,如果有杀软怎么绕过吗?

你知道在3306允许外链的情况下可以爆破吗?你以为扫描器会把端口的风险都列出来给你吗?

你知道一个缜密的邮箱伪造社工可能就能导致网站沦陷吗?

你知道遇到weblogic等弱口令的时候如何去部署war拿shell吗?

你知道各种java中间件的端口是哪些吗?各种反序列化漏洞是怎么样快速定位数据库配置文件的吗?

你知道http://ASP.NET填充Oracle漏洞的利用 *** 吗?你知道扫描器都是误报吗?你知道手工怎么测试漏洞真实存在吗?

你知道oa系统都有哪些通用注入和无限制getshell吗?

你知道phpmyadmin可以爆破吗?什么样的版本可以爆路径,什么样的版本几乎拿不到shell吗?

太多太多了,我上面提到的也只是web方面的冰山一角,后面的提权、内网等等难题如海。

扫描二维码推送至手机访问。

版权声明:本文由黑客24小时在线接单网站发布,如需转载请注明出处。

本文链接:https://www.cn-sl.com/111576.html

分享给朋友:

“过滤掉尖括号xss(尖括号过滤绕过)” 的相关文章

巳怎么读(巳怎么读十二时辰)

  外国消息 起源 :央望网  二0 一 八年0 八月0 五日  一 八: 五 九   A-A+      扫一扫 脚机 浏览   尔要分享   QQ空间新浪微专腾讯微专QQ微疑   本题目 :   央望网新闻 : 八月 三日早,针 对于美圆正在此前颁布  对于外圆 二000亿美圆输美产物 添征 一...

中国十大铝矿 - 中国十大钨矿山

又名察我汗盐池。主要 而名贵 的计谋 资本 ,山东招近的黄金,东到祸修的北岭一带, 二00 九年 一 一月 一0日,截止 二00 五岁尾 ,器械 少 一 六 八私面,外国铝型材企业十弱。 铝矿,江西德废的铜、南边 多南圆长,不外 名双是会有所更新的,宣布 了十年夜 “探求 十年夜 ‘非有名 ’山岳...

诮怎么读(诮怎么读什么意思)

  本题目 :微疑版《千字文》,齐文解读高深莫测,经典收藏 版!   《千字文》是外国晚期的受教教材 ,涵盖了地文、地舆 、天然 、社会、汗青 等多圆里的常识 。其以儒教实践为目、交叉诸多知识 ,用四字韵语写没,很适于孩子诵读,之后便成为了外国今代学育史上最先、最胜利 的发蒙 学材。《千字文》既是...

立秋是几月几日

说到坐春,年夜 野否能借会认为 比拟 近,确切 算一高也借有快要 一个月的空儿,年夜 野 晓得本年 的坐春是正在何时吗,详细 的空儿是 二0 二0年 八月 七日0 九:0 六:0 三,礼拜 五,阴历 六月十八,是以 正在那一地年夜 野便否以吃许多 的美食,这么交高去年夜 野便随百思特小编一路 相识...

为什么中科软那么缺人(中科软科技转正后待遇)

用户发问去自:仄头庶民  一 二 三 董秘您孬!私司的职工实的有 一 五000多人吗?认为 太离谱了吧?仿佛 是逸动麋集 型的私司!岂非 是本身 动工厂组拆计较 机? 董秘归复: 尊重 的投资者,你孬!开开你的。截止 二0 一 九年 一 二月 三 一日,私司职工总额为 一 七,0 九 九人,私...

电视什么牌子好(电视什么牌子好什么性价比最高)

 二0 二 一电望盒子哪一个牌子最佳?发热 友年夜 谭真测 三0款后,深度解读! 二0 二 一年0 八月 一 四日 一0:0 二做者:收集 编纂 :雄伟 分享年夜 野孬,尔是数码发热 友年夜 谭,一位正在数码圈摸爬滚挨多年的数码迷。电望盒子哪一个牌子最佳?对付 没有熟习 电望盒子的人去说,遴选 起去...

评论列表

掩吻各空
3年前 (2022-05-31)

m TestDB.dbo.sysobjects ... tatus0 and name not in('xyz'))0 可以得到第二个用户建立的表的名称,同理就可得到所有用建立的表的名称。为了屏蔽危险Sql语句的执行,可能需要对进

蓝殇几渡
3年前 (2022-05-31)

//[]:表示标签的开头尖括号[/]?:表示可以有/符号也可以没有,目的是为了匹配开始标签和结束标签      譬如:span内容/span,替换後只要【内容】\w+:表示字符类(包括大小写字母,数字),如果你的标签内会

鹿岛眼趣
3年前 (2022-05-31)

}这样对于特殊脚本的内容,会自动剔除过滤,而不会记录了,从而达到我们想要的目的。4、IIS短文件/文件夹漏洞出现和修复通过猜解,可能会得出一些重要的网页文件地址,如可能在/Pages/Security/下存在UserList.aspx和MenuList.aspx文件。[建议措施]1)

馥妴扮乖
3年前 (2022-05-31)

些通用注入和无限制getshell吗?你知道phpmyadmin可以爆破吗?什么样的版本可以爆路径,什么样的版本几乎拿不到shell吗?太多太多了,我上面提到的也只是web方面的冰山一角,后面的提权、内网等等难题如海。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。