Üks asi juhtub, kui kasutad ISAPI filtrit UrlScan "valge nimekirja" režiimis ning kui annad seadistustes ette nimekirja lubatud faili laienditest mida IIS töödelda võib. ASP.NET rakenduse puhul näiteks:
[AllowExtensions]
.png
.jpg
.gif
.aspx
siis tekib robleem juhul, kui sul on IIS-i alt konfigureeritud
Web Site properties -> Documents ja seal märgitud
märkeruut Enable default content page ja vaikimisi leheks naiteks logiSisse.aspx
Kui nüüd sirviku URL peale lihtsalt www.minusait.ee kirjutada siis veebileht enam ei avane ja UrlScani logist on näha veateadet
GET / Rejected extension+not+allowed file+extension . -
Põhjus selles, et UrlScan astub ennem vahele, otsib faili laiendit . mis aga pole lubatud.
Lahenduseks ka lihtsalt . tuleb [AllowExtensions] nimekrijas lubada
[AllowExtensions]
. ; kirjuta siia lihtsalt punkt ja tühik
.png
.jpg
.gif
.aspx
ja veebileht avaneb nüüd ka sirvikul ainult www.minusait.ee sisestades Enable default content page logiSisse.aspx lehega
reede, 29. jaanuar 2010
kolmapäev, 27. jaanuar 2010
UrlScan [AllowExtensions] ja CSS erinevate sirvikute korral
Kui võtta UrlScani nimeline ISAPI veebifilter IIS6-e peale kasutusele ja määrata seadistuses, et töötame "Valge nimekirjaga" UseAllowExtensions=1 , ehk lubame ainult teatud laienditega faile alla tirida
[AllowExtensions]
.gif
.aspx
.css
siis CSS failidega selline asi, et nende töötlemine sõltub sirvikust ja sellest, kas tegu on serveri või sirviku poolse kaskkaalaadistikuga (CSS).
Flock 2.5.2, Firefox 3.6 ja Opera 10.10 lasevad asja serveri poolel ära teha
ehk võib .css välja kommenteerida lubatavatest laienditest
[AllowExtensions]
.gif
.aspx
;.css
IE8 ja Safari 4.0.4 aga panevad pildi sirvikus endas kokku, ehk .css peab lubatavas laiendite nimekirjas olema.
Kui .txt laiend ära keelata siis tünga saavad ka need, kes robots.txt faili himustavad.
[AllowExtensions]
.gif
.aspx
.css
siis CSS failidega selline asi, et nende töötlemine sõltub sirvikust ja sellest, kas tegu on serveri või sirviku poolse kaskkaalaadistikuga (CSS).
Flock 2.5.2, Firefox 3.6 ja Opera 10.10 lasevad asja serveri poolel ära teha
ehk võib .css välja kommenteerida lubatavatest laienditest
[AllowExtensions]
.gif
.aspx
;.css
IE8 ja Safari 4.0.4 aga panevad pildi sirvikus endas kokku, ehk .css peab lubatavas laiendite nimekirjas olema.
Kui .txt laiend ära keelata siis tünga saavad ka need, kes robots.txt faili himustavad.
esmaspäev, 25. jaanuar 2010
Otsi stringi SQL SERVER-i andmebaasist
Kui enam meeles pole, mida kuhugi sai andmebaasi pandud siis otsimisel abiks järgnev skript:
set nocount on
DECLARE @pikkus INT, @rowID INT, @maxRowID INT, @sql NVARCHAR(4000), @searchValue NVARCHAR(100)
SET @searchValue = 'ei tööta' --seda otsitakse
DECLARE @statements TABLE (rowID INT, SQLL NVARCHAR(MAX) COLLATE DATABASE_DEFAULT)
CREATE TABLE #results (tableName NVARCHAR(250) COLLATE DATABASE_DEFAULT, tableSchema NVARCHAR(250) COLLATE DATABASE_DEFAULT
, columnName NVARCHAR(250) COLLATE DATABASE_DEFAULT, foundtext NVARCHAR(MAX) COLLATE DATABASE_DEFAULT )
SET @rowID = 1
SET @pikkus=LEN(@searchValue)
--TEXT 35
--NTEXT 99
--VARCHAR 167
--CHAR 175
--NVARCHAR, SYSNAME 231
--NCHAR 239
--XML 241
--create CTE table holding metadata
;WITH MyInfo (tableName, tableSchema, columnName, XTYPE) AS (
SELECT sysobjects.name AS tableName, USER_NAME(sysobjects.uid) AS tableSchema
, syscolumns.name AS columnName, syscolumns.XTYPE
FROM sysobjects WITH(NOLOCK) INNER JOIN syscolumns WITH(NOLOCK)
ON (sysobjects.id = syscolumns.id)
WHERE sysobjects.xtype = 'U' AND sysobjects.category=0
AND sysobjects.name <> 'sysdiagrams' --MSSQL diagramme ei vaata
AND syscolumns.XTYPE IN (35,99,167,175,231,239,214) AND syscolumns.prec >= @pikkus
)
INSERT INTO @statements
SELECT row_number() over (order by tableName, columnName) AS rowID, 'INSERT INTO #results SELECT '''+tableName+''', '''+tableSchema+''', '''+columnName+''', CAST('+columnName+' AS NVARCHAR(MAX)) FROM ['+tableSchema+'].['+tableName+'] WITH (NOLOCK) WHERE '+
CASE WHEN myInfo.XTYPE=241 --XML
THEN +'CONVERT(NVARCHAR(MAX),['+columnName+'])'
ELSE '['+columnName+']'
END+' LIKE ''%'+@searchValue+'%'''
FROM myInfo
SET @maxRowID = ( SELECT MAX(rowID) FROM @statements )
WHILE @rowID <= @maxRowID
BEGIN
SET @sql = (SELECT sqll FROM @statements WHERE rowID = @rowID )
EXEC sp_executeSQL @sql
SET @rowID = @rowID + 1
END
SELECT * FROM #results
drop table #results
set nocount on
DECLARE @pikkus INT, @rowID INT, @maxRowID INT, @sql NVARCHAR(4000), @searchValue NVARCHAR(100)
SET @searchValue = 'ei tööta' --seda otsitakse
DECLARE @statements TABLE (rowID INT, SQLL NVARCHAR(MAX) COLLATE DATABASE_DEFAULT)
CREATE TABLE #results (tableName NVARCHAR(250) COLLATE DATABASE_DEFAULT, tableSchema NVARCHAR(250) COLLATE DATABASE_DEFAULT
, columnName NVARCHAR(250) COLLATE DATABASE_DEFAULT, foundtext NVARCHAR(MAX) COLLATE DATABASE_DEFAULT )
SET @rowID = 1
SET @pikkus=LEN(@searchValue)
--TEXT 35
--NTEXT 99
--VARCHAR 167
--CHAR 175
--NVARCHAR, SYSNAME 231
--NCHAR 239
--XML 241
--create CTE table holding metadata
;WITH MyInfo (tableName, tableSchema, columnName, XTYPE) AS (
SELECT sysobjects.name AS tableName, USER_NAME(sysobjects.uid) AS tableSchema
, syscolumns.name AS columnName, syscolumns.XTYPE
FROM sysobjects WITH(NOLOCK) INNER JOIN syscolumns WITH(NOLOCK)
ON (sysobjects.id = syscolumns.id)
WHERE sysobjects.xtype = 'U' AND sysobjects.category=0
AND sysobjects.name <> 'sysdiagrams' --MSSQL diagramme ei vaata
AND syscolumns.XTYPE IN (35,99,167,175,231,239,214) AND syscolumns.prec >= @pikkus
)
INSERT INTO @statements
SELECT row_number() over (order by tableName, columnName) AS rowID, 'INSERT INTO #results SELECT '''+tableName+''', '''+tableSchema+''', '''+columnName+''', CAST('+columnName+' AS NVARCHAR(MAX)) FROM ['+tableSchema+'].['+tableName+'] WITH (NOLOCK) WHERE '+
CASE WHEN myInfo.XTYPE=241 --XML
THEN +'CONVERT(NVARCHAR(MAX),['+columnName+'])'
ELSE '['+columnName+']'
END+' LIKE ''%'+@searchValue+'%'''
FROM myInfo
SET @maxRowID = ( SELECT MAX(rowID) FROM @statements )
WHILE @rowID <= @maxRowID
BEGIN
SET @sql = (SELECT sqll FROM @statements WHERE rowID = @rowID )
EXEC sp_executeSQL @sql
SET @rowID = @rowID + 1
END
SELECT * FROM #results
drop table #results
neljapäev, 21. jaanuar 2010
Request.UrlReferrer abil päringuketramise takistamine "Valge" nimekirja põhiselt
Kui ei taha, et kõiksugu päringuketramist kasutavad vahendid (otsimootorid ja häkkerautomaadid) hakkavad sinu veebirakendust susima ja seal auke leidma võib kasutada
meetodit, kus näiteks MasterPage sees kontrollid UrlReferrer sisu "Valge" nimekirja alusel.
protected void Page_Load(object sender, EventArgs e)
{
if (!((this.Request.UrlReferrer.ToString().Contains("RakenduseRoll"))
|| (this.Request.UrlReferrer.ToString().Contains("login.aspx"))
))
{
Response.Redirect("~/login.aspx");
}
}
ehk kui UrlReferrer sisu pole sobiv, siis suunad avalehele tagasi.
Senikaua kuni UrlReferrer sisu ära taibata üritatakse võid ennast muretumalt tunda.
Kõrvalnähuna tuleb VisualStudio veebiteste modifitseerida ja nii mõnigi muu asi võib katki minna ehk eelnevalt kindlasti kontrollida kas
this.Request.UrlReferrer==null
meetodit, kus näiteks MasterPage sees kontrollid UrlReferrer sisu "Valge" nimekirja alusel.
protected void Page_Load(object sender, EventArgs e)
{
if (!((this.Request.UrlReferrer.ToString().Contains("RakenduseRoll"))
|| (this.Request.UrlReferrer.ToString().Contains("login.aspx"))
))
{
Response.Redirect("~/login.aspx");
}
}
ehk kui UrlReferrer sisu pole sobiv, siis suunad avalehele tagasi.
Senikaua kuni UrlReferrer sisu ära taibata üritatakse võid ennast muretumalt tunda.
Kõrvalnähuna tuleb VisualStudio veebiteste modifitseerida ja nii mõnigi muu asi võib katki minna ehk eelnevalt kindlasti kontrollida kas
this.Request.UrlReferrer==null
kolmapäev, 13. jaanuar 2010
requestFiltering maxQueryString ja Sys.WebForms.PageRequestManager is null or not an object viga
Selline hea tahtmine, et piirame IIS7 peal requestFilteringiga päringu pikkust mida IIS7 vastu võtab
Kui juhtub, et IE8 hakkab veebilehele vasakul allääres näitama kollast hüüumärgiga kolmnurka
tekstiga "Valmis, kuid lehel on tõrkeid" (Firefox 3.5.7, Opera 10.10 ja Safari 4.0.4 ei näita midagi kahtlast)ning kui selle hüüumärgiga kolmnurga peal topeltlikkida tuleb veateade
Sys.WebForms.PageRequestManager is null or not an object
ehk veebilehel võetakse AJAX-i toimimine maha
siis korda saab nii, et seda maxQueryString parameetri väärtust tuleb suurendanda
Kui juhtub, et IE8 hakkab veebilehele vasakul allääres näitama kollast hüüumärgiga kolmnurka
tekstiga "Valmis, kuid lehel on tõrkeid" (Firefox 3.5.7, Opera 10.10 ja Safari 4.0.4 ei näita midagi kahtlast)ning kui selle hüüumärgiga kolmnurga peal topeltlikkida tuleb veateade
Sys.WebForms.PageRequestManager is null or not an object
ehk veebilehel võetakse AJAX-i toimimine maha
siis korda saab nii, et seda maxQueryString parameetri väärtust tuleb suurendanda
teisipäev, 5. jaanuar 2010
SQLSERVER loginid nõrkade salakoodidega
Otsib välja need SQL SERVER-i loginid, mille salakood on etteantud nimekirjas või salakoodiks on kasutajatunnus või kasutajatunnus pööratult
Käivitage skript ning olge loov, julm ja metoodiline nõrkuste ravimisel. Ärge halastage kellelegi !!
USE [master]
DECLARE @WeakPwdList TABLE(WeakPwd NVARCHAR(255) COLLATE DATABASE_DEFAULT )
--Nõrkade salakoodide nimekiri
--@@Name on selleks, et testida kas salakoodiks on kasutajatunnus
INSERT INTO @WeakPwdList(WeakPwd)
SELECT ''
UNION SELECT '123'
UNION SELECT '1234'
UNION SELECT '12345'
UNION SELECT '123456'
UNION SELECT 'abc'
UNION SELECT 'abc123'
UNION SELECT 'qwerty'
UNION SELECT 'qwert'
UNION SELECT 'qwer'
UNION SELECT 'asdfg'
UNION SELECT 'asdf'
UNION SELECT 'asd'
UNION SELECT 'default'
UNION SELECT 'guest'
UNION SELECT '@@Name123'
UNION SELECT '@@Name12'
UNION SELECT '@@Name1'
UNION SELECT '@@Name'
UNION SELECT '@@Name@@Name'
UNION SELECT '@@Name1@@Name'
UNION SELECT '@@Name12@@Name'
UNION SELECT '@@Name123@@Name'
UNION SELECT 'admin'
UNION SELECT 'Administrator'
UNION SELECT 'admin123'
--SELECT * FROM @WeakPwdList
SELECT sql_logins.name AS [LoginName],
CASE
WHEN PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name)),password_hash) = 0 THEN REPLACE(t2.WeakPwd,'@@Name',sql_logins.name)
ELSE REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name))
END AS [Password]
,sql_logins.default_database_name,sql_logins.is_policy_checked,sql_logins.is_expiration_checked,sql_logins.is_disabled
,(SELECT suser_sname(owner_sid) FROM sys.databases WHERE databases.name = sql_logins.default_database_name) AS database_owner
FROM sys.sql_logins INNER JOIN @WeakPwdList t2 ON (PWDCOMPARE(t2.WeakPwd, password_hash) = 1
OR PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',sql_logins.name),password_hash) = 1
OR PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name)),password_hash) = 1 )
--WHERE sql_logins.is_disabled=0
ORDER BY sql_logins.name
SQL LOGIN-eid saab sundida jälgima Windows Serveri policy-t
http://technet.microsoft.com/en-us/library/cc875814.aspx
Kontrollige, et Windowsi policyt oleksid peale seatud
ja SQL SERVERIS kasutajate tegemisel või muutmisel CHECK_POLICY = ON
Käivitage skript ning olge loov, julm ja metoodiline nõrkuste ravimisel. Ärge halastage kellelegi !!
USE [master]
DECLARE @WeakPwdList TABLE(WeakPwd NVARCHAR(255) COLLATE DATABASE_DEFAULT )
--Nõrkade salakoodide nimekiri
--@@Name on selleks, et testida kas salakoodiks on kasutajatunnus
INSERT INTO @WeakPwdList(WeakPwd)
SELECT ''
UNION SELECT '123'
UNION SELECT '1234'
UNION SELECT '12345'
UNION SELECT '123456'
UNION SELECT 'abc'
UNION SELECT 'abc123'
UNION SELECT 'qwerty'
UNION SELECT 'qwert'
UNION SELECT 'qwer'
UNION SELECT 'asdfg'
UNION SELECT 'asdf'
UNION SELECT 'asd'
UNION SELECT 'default'
UNION SELECT 'guest'
UNION SELECT '@@Name123'
UNION SELECT '@@Name12'
UNION SELECT '@@Name1'
UNION SELECT '@@Name'
UNION SELECT '@@Name@@Name'
UNION SELECT '@@Name1@@Name'
UNION SELECT '@@Name12@@Name'
UNION SELECT '@@Name123@@Name'
UNION SELECT 'admin'
UNION SELECT 'Administrator'
UNION SELECT 'admin123'
--SELECT * FROM @WeakPwdList
SELECT sql_logins.name AS [LoginName],
CASE
WHEN PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name)),password_hash) = 0 THEN REPLACE(t2.WeakPwd,'@@Name',sql_logins.name)
ELSE REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name))
END AS [Password]
,sql_logins.default_database_name,sql_logins.is_policy_checked,sql_logins.is_expiration_checked,sql_logins.is_disabled
,(SELECT suser_sname(owner_sid) FROM sys.databases WHERE databases.name = sql_logins.default_database_name) AS database_owner
FROM sys.sql_logins INNER JOIN @WeakPwdList t2 ON (PWDCOMPARE(t2.WeakPwd, password_hash) = 1
OR PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',sql_logins.name),password_hash) = 1
OR PWDCOMPARE(REPLACE(t2.WeakPwd,'@@Name',REVERSE(sql_logins.name)),password_hash) = 1 )
--WHERE sql_logins.is_disabled=0
ORDER BY sql_logins.name
SQL LOGIN-eid saab sundida jälgima Windows Serveri policy-t
http://technet.microsoft.com/en-us/library/cc875814.aspx
Kontrollige, et Windowsi policyt oleksid peale seatud
ja SQL SERVERIS kasutajate tegemisel või muutmisel CHECK_POLICY = ON
Tellimine:
Postitused (Atom)