发布新日志

  • fdsafdsa

    2009-05-31 13:10:39

    oo

  • 苏州之行

    2008-04-17 21:10:46

      上周日不远百里自费去参加了苏州的测试沙龙,呵呵,感觉就一个字累,呵呵,本来早上9点就到车站了,可是早上只有11点半的车是去苏州的,晕,车在路上又奔波了将近三个小时,到的苏州的时候已经是下午2:30了,赶紧买张地图,然后打的到中山大厦,已经是2:55了,赶紧做在最后的一排的空位,刚听2分钟,就听见陈老师说讲完了,休息几分钟后提问,晕,还好被照了张像,从我身边照的,当然最大的头像那个就是我了,呵呵,我也是刚在网页上面看见的,上电视了,值了,呵呵.
      提问更是搞笑,我是最后一个交的问题,随便写的,以为回答不到我,很是潦草,可是,上去的第一个问题就被Liangjz搞不太清晰被第一个叫起来的,红着脸解释了一下,呵呵.人帅就是没办法.旁边的一位说话不太清晰的MM也提了不少问题哦.
      听完课赶紧去车站找车,还好能赶上,总算安心了,到住的地方已经是晚上8:00了.
  • MySql

    2008-03-27 20:26:10

    今天看了看mysql,总结了有关数据库表的10种最常用操作和用户管理的7种操作。如果掌握了,说明mysql已经入门了。
    对于数据库表的10种最常用操作。
    1。使用mysql首先要登陆数据库
    //登陆远程或本地的数据库
    mysql -h host(计算机名) -u user(数据库用户) -p
    2。
    创建数据库:
    create database db_name;
    3。显示mysql中所有的数据库
    SHOW DATABASES;
    4。打开一个要 使用的数据库
    use db_name;
    5。为打开的数据库创建一个表
    mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
    6。显示库中的表
    show tables;
    7。显示表的结构:
    describe pet;
    8。为表插入数据
    insert into values pet('','','',''....);
    9.查询表中的数据
    select name,owner
    from pet
    where name='.....$'
    10。删除表的内容
    delete from pet;

    对于数据库用户管理的最常用操作。
    1。使用mysql首先要登陆数据库
    //登陆远程的数据库
    mysql -h host(计算机名) -u user(数据库用户) -p

    2。创建一个用户:
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' 对谁用to
    -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    3。更改密码:
    update mysql.user set password=password('test')
    where user='test' and host ='localhost';
    4。查看数据库中的所有用户
    SELECT Host, User FROM mysql.user;
    5。查看用户的权限 :
    SHOW GRANTS FOR CURRENT_USER; 为谁查看权限
    6。撤销用户权限
    revoke all privileges on *.* from 'user'@'localhost';从谁撤销权限用from
    7。//删除用户
    delete from mysql.user
    where user='test' and host='localhost';

    drop user 'test'@'localhost';

  • SQL注入和CSS攻击的检测

    2008-03-27 15:37:06

    作者:K. K. Mookhey , Nilesh Burghate,
    翻译:FPX[B.C.T]

    1. 介绍
    在 最后两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有 遵循安全代码进行开发,攻击者将通过80端口进入你的系统。广泛被使用的两个主要攻击技术是SQL注入[ref 1] 和CSS[ref 2] 攻击。SQL注入是指:通过互联网的输入区域,插入SQL meta-characters(特殊字符 代表一些数据)和指令,操纵执行后端的SQL查询的技术。这些攻击主要针对其他组织的WEB服务器。CSS攻击通过在URL里插入scrīpt标签,然后 诱导信任它们的用户点击它们,确保恶意Javascrīpt代码在受害人的机器上运行。这些攻击利用了用户和服务器之间的信任关系,事实上服务器没有对输 入、输出进行检测,从而未
    拒绝javascrīpt代码。
    这篇文章讨论SQL注入和CSS攻击漏洞的检测技术。网上已经有很多关 于这两种基于WEB攻击的讨论,比如如何实施攻击,他们的影响,怎样更好的编制和设计程序防止这些攻击。 然而, 对如何检测这些攻击并没有足够的讨论。 我们采用流行的开源的IDS Snort[ref 3],组建根据检测这些攻击的规则的正则表达式。 附带,Snort默认规则设定包含检测CSS的方法,但是这些容易被避开检测。比如大多通过hex进制编码,如%3C%73%63%72%69%70% 74%3E代替<scrīpt>避开检测。


    依赖level of paranoia组织的能力,我们已经编写了多种检测相同攻击的规则。如果你希望检测各种可能的SQL注入攻击,那么你需要简单的留意任何现行的SQL meta-characters,如单引号,分号和双重破折号。同样的一个极端检测CSS攻击的方法,只要简单地提防HTML标记的角括号。但这样会检测 出很多错误。为了避免这些,这些规则需要修改使它检测更精确些, 当仍然不能避免错误。


    在Snort规则中使用pcre(Perl Compatible Regular Expressions)关键字,每个规则可以带或不带其他规则动作。这些规则也可以被公用软件如grep(文档搜索工具)使用,来审阅网络服务器日志。 但是,需要警惕的是,用户的输入只有当以GET提交请求时,WEB服务器才会记录日记,如果是以POST提交的请求在日记中是不会记录的。


    2. SQL注入的正则表示式
    当 你为SQL注入攻击选择正则表示式的时候,重点要记住攻击者可以通过提交表单进行SQL注入,也可以通过Cookie区域。你的输入检测逻辑应该考虑用户 组织的各类型输入(比如表单或Cookie信息)。并且如果你发现许多警告来自一个规则,请留意单引号或者是分号,也许些字符是你的Web应用程序创造的 合法的在CookieS中的输入。因此, 您需要根据你的特殊的WEB应用程序评估每个规则。


    依照前面提到,一个琐细的检测SQL射入攻击的正则表达式要留意SQL特殊的meta-characters 譬如单引号(')双重扩则号(--),为了查出这些字符和他们hex等值数, 以下正则表达式适用:


    2.1 检测SQL meta-characters的正则表达式
    /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix


    解释:
    我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。这些是MS SQL Server或Oracle的字符, 表示后边的为评论, 随后的都将被忽略。 另外,如果你使用MySQL,你需要留意 '#'和它等值的hex的出现。注意我们不需要检查双重破折号等值的hex, 因为这不是HTML meta-character, 浏览器不会进行编码。 并且, 如果攻击者设法手工修改双重破折号为它的hex值%2D(使用代理像Achilles[ref 5]), SQL注入将失败。 
    加入上述正则表达式的新的Snort规则如下:


    alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL Injection - Paranoid"; flow:to_server,established;uricontent:".pl";pcre:"/(\%27)|(\')|(\-\-)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)


    在本篇讨论中, uricontent关键字的值为".pl ", 因为在我们的测试环境里, CGI 程序是用Perl写的。uricontent关键字的值取决于您的特殊应用, 这个值也许是".php ", 或" .asp ", 或" .jsp ", 等。 从这点考虑, 我们不显示对应的Snort 规则, 但是我们会给出创造这些规则的正则表达式。 通过这些正则表达式你可以很简单的创造很多的Snort规则.在前面的正则表达式里, 我们检测双重破折号是因为:即便没有单引号的存在那里也可能是SQL射入点[ref 6]。 例如, SQL查询条目只包含数值,如下:


    select value1, value2, num_value3 from database 
    where num_value3=some_user_supplied_number


    这种情况,攻击者可以执行额外的SQL查询, 示范提交如下输入:


    3; insert values into some_other_table


    最后, pcre的修饰符' i' 和' x ' 是用于分别匹配大小写和忽略空白处的。 上面的规则也可以另外扩展来检查分号的存在。然而,分号很可以是正常HTTP应答的一部分。为了减少这种错误,也是为了任何正常的单引号和双重扩折号的出


    现,上面的规则应该被修改成先检测=号的存。用户输入会响应一个GET或POST请求,一般输入提交如下:


    username=some_user_supplied_value&password=some_user_supplied_value


    因此, SQL 注入尝试将导致用户的输入出现在a = 号或它等效的hex值之后。


    2.2 修正检测SQL meta-characters的正则表达式


    /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|(:))/i


    解释:
    这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。


    典 型的SQL注入会尝试围绕单引号的用途操作原来的查询,以便得到有用的价值。讨论这个攻击一般使用1'or'1'='1字符串. 但是, 这个串的侦查很容易被逃避,譬如用1'or2>1 --. 然而唯一恒定的部分是最初的字符的值,跟随一单引号,再加'or'。随后的布尔逻辑可能在一定范围上变化,可以是普通样式也可能是非常复杂的。这些攻击可 以相当精确被侦测,通过以下的正则表达式。2.3章节讲解。


    2.3 典型的 SQL 注入攻击的正则表达式


    /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix


    解释:
    \w* - 零个或多个字符或者下划线。
    (\%27)|\' - 单引号或它的hex等值。
    (\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -‘or’的大小写以及它的hex等值。


    'union'SQL 查询在SQL注入各种数据库中攻击中同样是很常见的。如果前面的正则表达式仅仅检测单引号或则其他的SQL meta characters ,会造成很多的错误存在。你应该进一步修改查询,检测单引号和关键字‘union’。这同样可以进一步扩展其他的SQL关键字,像'select', 'insert', 'update', 'delete', 等等。


    2.4 检测SQL注入,UNION查询关键字的正则表达式


    /((\%27)|(\'))union/ix


    (\%27)|(\') - 单引号和它的hex等值
    union - union关键字


    可以同样为其他SQL查询定制表达式,如 >select, insert, update, delete, drop, 等等.


    如 果,到这个阶段,攻击者已经发现web应用程序存在SQL注入漏洞,他将尝试利用它。如果他认识到后端服务器式MS SQL server,他一般会尝试运行一些危险的储存和扩展储存过程。这些过程一般以‘sp’或‘xp’字母开头。典型的,他可能尝试运行 ‘xp_cmdshell’扩展储存过程(通过SQL Server执行Windows 命令)。SQL服务器的SA权限有执行这些命令的权限。同样他们可以通过xp_regread, xp_regwrite等储存过程修改注册表。


    2.5 检测MS SQL Server SQL注入攻击的正则表达式


    /exec(\s|\+)+(s|x)p\w+/ix


    解释:
    exec - 请求执行储存或扩展储存过程的关键字
    (\s|\+)+ - 一个或多个的空白或它们的http等值编码
    (s|x) p- ‘sp’或‘xp'字母用来辨认储存或扩展储存过程
    \w+ - 一个或多个字符或下划线来匹配过程的名称


    3. 跨站脚本(CSS)的正则表达式


    当 发动CSS攻击或检测一个网站漏洞的时候, 攻击者可能首先使简单的HTML标签如<b>(粗体),<i>(斜体)或<u>(下划线),或者他可能尝试简单的 scrīpt标签如<scrīpt>alert("OK")</scrīpt>. 因为大多数出版物和网络传播的检测网站是否有css漏洞都拿这个作为例子。这些尝试都可以很简单的被检测出来。 然而,高明点的攻击者可能用它的hex值替换整个字符串。这样<scrīpt>标签会以%3C%73%63%72%69%70%74%3E出 现。 另一方面,攻击者可能使用web代理服务器像Achilles会自动转换一些特殊字符如<换成%3C、>换成%3E.这样攻击发生时,URL 中通常以hex等值代替角括号。


    下列正则表达式将检测任何文本中包含的html的<、>。它将捉住试图使用< b>、<u>、或<scrīpt>。这正则表达式应该忽略大小写。我们需要同时检测角括号和它的hex等值(% 3C|<)。检测hex进制转化的整个字符串,我们必须检测用户输入的数字和%号,即使用[a-z0-9%] 。这可能会导致一些错误出现,不是大部分会检测到真实攻击的。


    3.1 一般 CSS 攻击的正则表达式


    /((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/ix


    解释:
    ((\%3C)|<) -检查<和它hex等值
    ((\%2F)|\/)*-结束标签/或它的 hex等值
    [a-z0-9\%]+ -检查标签里的字母或它hex等值
    ((\%3E)|>) -检查>或它的hex等值


    Snort 规则: 
    alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"NII Cross-site scrīpting attempt"; flow:to_server,established; pcre:"/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/i"; classtype:Web-application-attack; sid:9000; rev:5;)


    跨站脚本同样可以使用<img src=>技术。现行默认的snort规则可以被轻易避开。


    3.2章节提供了防止这种技术的方法。


    3.2 "<img src" CSS 攻击正则表达式


    /((\%3C)|<)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^\n]+((\%3E)|>)/I


    解释:
    (\%3 C)|<) -<或它的hex等值
    (\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -'img'字母或它的大小写hex等值的变化组合
    [^\n]+ -除了换行符以外的任何跟随<img的字符
    (\%3E)|>) ->或它的hex等值


    3.3 CSS 攻击的极端的正则表达式


    /((\%3C)|<)[^\n]+((\%3E)|>)/I


    解释:
    这个规则简单寻找<+除换行符外的任何字符+>。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。


    一个不错避开过滤的CSS方法请参考Bugtraq投稿的
    http://www.securityfocus.com/archive/1/272...rchive/1/272037. 
    但是请注意最后一种极端的规则将能检测这所有的攻击。


    总结:


    在 这篇文章中,我们提出了不同种类的正则表达式规则来检测SQL注入和跨站脚本攻击。有些规则简单而极端,一个潜在的攻击都将提高警惕。但这些极端的规则可 能导致一些主动的错误。考虑到这点,我们修改了这些简单的规则,利用了另外的样式,他们可以检查的更准确些。在这些网络应用成的攻击检测中,我们推荐将这 些作为调试你IDS或日志分析方法的起点。再经过几次修改后,在你对正常网交易部分的非恶意应答进行评估以后,你应该可以准备的检测那些攻击了。


    参考
    1. SQL Injection


    http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf 
    2. Cross Site scrīpting FAQ http://www.cgisecurity.com/articles/xss-faq.shtml
    3. The Snort IDS http://www.snort.org 
    4. Perl-compatible regular expressions (pcre) http://www.pcre.org
    5. Web application proxy, Achilles http://achilles.mavensecurity.com 
    3. Advanced SQL Injection 
    http://www.nextgenss.com/papers/advanced_sql_injection.pdf
    7. Secure Programming HOWTO, David Wheeler www.dwheeler.com
    8. Threats and Countermeasures, MSDN, Microsoft 
    http://msdn.microsoft.com

  • 转载的经验

    2008-03-12 10:33:20

    脚本能有效模拟用户行为,是产生系统压力的关键。脚本关键要求是可迭代、并发运行,更详细要求至少包含:

    (1)需要度量用户等待的步骤,应加入事务(transaction)

    (2)事务命名:用例名_步骤名

    (3)需要用户输入的地方,必要时加入参数化(parameter)。一般为一个VUSER准备4条以上的数据

    (4)加入必要的校验点( checkpoint)

    (5)若后一步骤的输入依赖于前面步骤的输出,应该建立关联(colleration)

    (6)脚本行为与用户行为一致,与文档操作步骤一致

    (7)最好选取数据适中的区域,若不确信,请选取数据集中的区域

    (8)动态变更的数据若不能通过用户输入或者服务器返回获取,请变更流程适应测试。如随机动态图片上的校验码。

    为了最大程度复用脚本,请严格依照以上步骤执行。同时,我们在获取脚本后,会增加进一步的验证点。另外,请在评测中心校验或者开发脚本期间,派熟悉涉及模块的程序员到现场技术支持。检查点一般
    (1)安装 ethreal截获网络包,对比loadrunner录制的数据流确保不遗漏压力。
    (2)insert/update/delete 业务回放脚本,然后通过应用界面检查或者通过sql查询。对于查询类,可以在服务器安装tcpdump 截获client网络包,检查sql
    (3)询问业务错误的特征码,在脚本中注册错误码
    (4) 检查参数化属性是否符合业务需求
    (5)回放脚本,最好把extend log打开,观察有无error,mismatch或者 http 1.1 500/400等关键词

  • 偶还年轻

    2008-03-08 10:04:33

       突然的看到华为又有人跳楼了,心里凉凉的幸好当初没有去这个公司,不然现在现在跳的可能是偶.偶还不想死这么早,偶还年轻偶还有深爱的人

       偶现在什么都不怕,因为偶还活着偶什么都不怕,因为偶比较帅

  • 最近要搞LoadRunner测试了

    2008-02-29 22:25:32

      最近老外突然发镖了,网站组的大型网站突然人手不够了,为了按时完成任务.我也从Java组调去测试了,搞了半个月的功能测试.突然组长就把性能测试了交给我肯了.^_^

      现在决定废寝忘食半个月吞下LoadRunner.还好有51的兄弟们帮忙.

      谢谢你们提供的这么全的资料.

     

Open Toolbar