당신이 본 최악의 보안 구멍? [닫은]


413

지금까지 본 최악의 보안 취약점은 무엇입니까? 유죄를 보호하기 위해 세부 사항을 제한하는 것이 좋습니다.

무엇의 가치를 들어, 다음의 질문 에는 보안 구멍을 발견 한 경우 수행 할 작업에 대한, 그리고 다른 유용한 답변이 회사는하지 응답 (것) 않는 경우.


47
커뮤니티 위키 이모 여야합니다.
ChristopheD

큰 실! 나는 그것이 DailyWTF.com에서 연결될 수 있기를 바랍니다
Dale

왜 폐쇄 되었습니까? 완벽하게 합리적인 질문입니까? !!
johnc

15
60 개의 답변과 28 개의 투표율이 5 표를 앞질렀다. 그러나 이것이 논의 될 때까지 투표 재개를 자제 할 것입니다.
rmeador

7
귀하의 질문이 몇 시간 동안 커뮤니티 위키 였음에도 불구하고,이 의견 과 유사한 질문은 커뮤니티 위키 여야 함을 상기시켜주는 의견이므로 여전히 의견을 개진하는 것이 좋습니다 . 그것이 내가 생각하는 것입니다.
Joren

답변:


646

온라인 상점 초기부터 :

장바구니의 수량 필드에 0.1을 입력하여 90 % 할인 받기 소프트웨어는 총 비용을 .1 * 비용으로 적절하게 계산했으며 주문을 포장하는 사람은 단순히 "홀수"이상으로 광택을 내었습니다. 포장 수량 :)


75
이것은 분명히 강력한 형식의 시스템을 사용하는 것에 대한 주장입니다.
Powerlord

54
사이트는 무엇입니까? 90 % 할인을 원합니다 !!!
amischiefr

58
어쩌면 당신은 대신 10 %의 수량을 요청했을 것입니다. ;)
MiffTheFox

81
Jeff Bezos는 아마존 초창기에는 마이너스 수량의 책을 보유 할 수 있으며 아마존은 귀하의 계정에 크레딧을 제공 할 것입니다. youtube.com/watch?v=-hxX_Q5CnaA
Jeff Moser

10
실제로 지불 한 .1 하드 드라이브를 제공 한 고객의 얼굴을보고 싶었을 것입니다.

575

가장 용서할 수없는 보안 허점, 불행히도 가장 일반적이고 찾기 쉬운 것은 Google 해킹 입니다. 지목 사항:

http://www.google.com/search?q=inurl%3Aselect+inurl%3A%2520+inurl%3Afrom+inurl%3Awhere

인터넷, 특히 정부 사이트에서 쿼리 문자열을 통해 SQL 쿼리를 전달하는 페이지 수는 놀랍습니다. 최악의 SQL 주입 형식이며 취약한 사이트를 찾는 데 전혀 노력하지 않습니다.

약간의 조정만으로 보호되지 않은 phpMyAdmin 설치, 보호되지 않은 MySQL 설치, 사용자 이름 및 비밀번호가 포함 된 쿼리 문자열 등을 찾을 수있었습니다.



6
세상에, 어리석은 짓이야 박스를 손에 들고 개발자에게 인사를 전할 것입니다.
squillman

95
작은 바비 테이블은 다시 ... 파업 xkcd.com/327
gbjbaanb

86
OMFG ... 다음 번에 내가 어떤 테이블을 드롭 이동, 나쁜 일이
마이클 Niemand

11
이 예제에서 내가 정말 좋아하는 것은 첫 번째 결과는 Oracle 블로그에서 얻은 것입니다.
Ravi Wallau

400

사회 공학 :

<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.

에서 bash.org


2
Runescape에서 항상 발생했습니다.
EvilTeach

7
이 특별한 교류는 실제로 일어날 가능성은 거의 없지만 (어떤 것을 다루려고 할 때 누가 "er"를 입력하겠습니까?) 그럼에도 불구하고 재미 있습니다.
Michael Myers

1
mmyers : 또한 누군가가 rm -rf'd를 얻을만큼 어리석은 경우는 거의 없지만, 확실히 일어납니다. 나는 그것을 스스로 보았다 :)
Matthew Iselin

25
바보의 뇌보다 더 불안한 것은 없습니다
Earlz

1
@EvilTeach는 RuneScape에서 실제로 구현했습니다. 농담조차도!
corsiKa

339

Microsoft의 초기 시절의 실화.

ZDNet.com에서 아침이 " Blah "에서 발견 된 최악의 Internet Explorer 보안 취약점이 발견되었습니다 . "Blah"는 6 개월 전에 작성한 코드입니다. .

작업을 시작하자마자 변경 로그를 확인한 후 다른 팀의 직원 (제품 변경을 신뢰할 수있는 사람)이 내 코드를 확인하고 아무런 이유없이 보안 레지스트리 키 설정을 변경했음을 발견했습니다. 다시 체크인했으며 코드 검토를 받거나 다른 사람에게 알리지 않았습니다. 오늘날까지 나는 지상에서 그가 무엇을하고 있다고 생각하는지 전혀 모른다. 그는 곧 회사를 떠났다. (자신의 협정에 따라)

(업데이트 : 의견에서 제기 된 문제에 대한 몇 가지 답변 :

먼저, 보안 키 변경이 의도적이지 않고 악의가 아닌 부주의 또는 친숙 함을 기반으로한다는 자선적인 입장을 취하기로 결정했습니다. 나는 어떤 식 으로든 다른 방법으로 증거가 없으며, 인간의 실수로 실수를 일으키는 것이 현명하다고 믿는다.

둘째, 체크인 시스템은 12 년 전보다 훨씬 강력합니다. 예를 들어, 체크인 시스템이 변경 목록을 이해 당사자에게 이메일로 보내지 않으면 코드를 체크인 할 수 없습니다. 특히, 선박주기 후반에 변경된 사항에는 제품의 안정성과 보안을 보장하기 위해 올바른 변경이 이루어 지도록 많은 "프로세스"가 있습니다.)

어쨌든 버그는 Internet Explorer에서 사용하기에 안전하지 않은 개체가 실수로 "스크립트 사용에 안전"으로 표시되었다는 것입니다. 이 개체는 바이너리 파일 (실제로 OLE 자동화 유형 라이브러리)을 임의의 디스크 위치에 쓸 수있었습니다. 이것은 공격자가 적대적인 코드의 특정 문자열을 포함하는 형식 라이브러리를 제작하고 알려진 실행 가능한 위치 인 경로에 저장하며 스크립트 실행을 유발할 수있는 확장 기능을 제공하며 사용자에게 희망을 줄 수 있음을 의미했습니다. 실수로 코드를 실행합니다. 이 취약점을 사용한 성공적인 "실제"공격에 대해서는 알지 못하지만이 취약점을 악용하여 악용 할 수는 있습니다.

우리는 그 패치를 매우 신속하게 제공했습니다.

나는 JScript에서 더 많은 보안 허점을 일으켜서 고쳤지만 그 어느 것도 그 홍보지 근처에 없었습니다.


81
틀림없이 이것은 실제로 2 가지 보안 취약점입니다. 다른 하나는 변경 사항을 알리거나 승인하지 않고 프로덕션 빌드 서버에 코드를 얻는 방법입니다. ;-p
Marc Gravell

8
"내 코드를 체크 아웃하고 아무런 이유없이 보안 레지스트리 키 설정을 변경 한 후 다시 체크인했으며 코드 검토를받지 않았거나 다른 사람에게 알리지 않았습니다"-무능한 것처럼 들리지 않습니다. 누군가의 악의적 인 의도처럼 자신이하는 일을 정확히 알고있었습니다 .
Juliet

80
"어리 석음으로 적절히 설명 할 수있는 것은 악의에 의한 것이 아니다." -Hanlon 's Razor
David R Tribble

15
Microsoft 전체에서 사용하도록 지정된 소스 제어 시스템은 없습니다. 요즘 대부분의 팀은 Source Depot 또는 Team Foundation을 사용합니다. 당연히 Visual Studio 제품 팀은 일반적으로 Team Foundation을 사용합니다. 자신의 개밥을 먹는다.
Eric Lippert

40
출근 전에 ZDNet을 누가 확인합니까?
Neil N

274

여기서 잘못된 점을 발견 할 수 있기를 바랍니다. (사실, 정말로 잘못되었습니다) :

String emailBody = "";

for (int i = 0; i < subscribers.Count; i++)
{
    emailBody += "Hello " + subscribers[i].FirstName + ",";
    emailBody += "this is a reminder with your account information: \n\n:";
    emailBody += "Your username: " + subscribers[i].Username + "\n";
    emailBody += "Your password: " + subscribers[i].Password + "\n";
    emailBody += "Have a great day!";

    emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}

마지막 수신자는 가장 행복했습니다.)


226
일반 텍스트 비밀번호를 저장한다는 사실 또는 emailBody가 지워지지 않았다는 사실에 대해 이야기하고 있습니까? 어느 쪽이 더 나쁜지조차 확실하지 않습니다.
Kristof Provost

208
StringBuilder를 사용하지 않습니까? : D (그냥 농담)
ShdNx

58
@ 크리스토프-나는 마지막 사용자가 모든 사용자와 암호 목록을 얻는다는 것을 의미한다고 생각합니다. :)
Don Branson

141
등록 과정의 일부로 비밀번호를 이메일로 보내는 시스템을 절대 싫어 합니다. 여기에는 두 가지 결함이 있습니다. 1. 시스템 내 어딘가에 일반 텍스트 암호를 저장하고 있습니다. 영구 사용자 데이터베이스가 아닌 경우 등록 처리 시스템입니다. 2. 인터넷을 통한 메일 릴레이를 통해 SMTP, 일반 텍스트 또는 HTML로 EMAIL을 통해 전송되었습니다. 이를 가로 챌 수있는 중간자 (man-in-the-middle)가 많이 있습니다. 최소한 보안 정보가 담긴 이메일을 보내야 할 필요가 있다고 생각되면 공개 PGP 키를 지정하여 암호화하십시오!
Jesse C. Slicer

16
MD5 해시를 사용하여 데이터베이스의 암호를 한 번 보호했습니다. 그러나 레인보우 테이블을 통해 결과를 실행하고 암호의 약 50 %를 일치시킨 후 ... 나는 소금을 첨가하기에 좋은시기라고 생각했습니다.
Matthew Whited

206

이전 IBM System 36 바보 터미널에는 매크로 기록을 시작하는 키보드 조합이있었습니다. 따라서 터미널이 로그인되지 않은 경우 매크로 기록을 시작하고 해당 위치에 그대로 둘 수 있습니다. 다음에 누군가 로그인하면 키 입력이 매크로에 기록되고 최대 허용 키가 기록되면 기록이 자동으로 종료됩니다. 나중에 다시 와서 매크로를 자동 로그인으로 재생하십시오.

대체 텍스트


204

내가 본 최악의 보안 취약점은 실제로 귀하의 코드에 의해 코딩되었으며 Google Bot이 전체 데이터베이스를 삭제하게했습니다.

클래식 ASP를 처음 배우던 시절에 저는 기본 블로그 응용 프로그램을 코딩했습니다. 모든 관리 스크립트가있는 디렉토리는 IIS의 NTLM에 의해 보호되었습니다. 어느 날 새 서버로 옮겼으며 IIS에서 디렉토리를 다시 보호하는 것을 잊었습니다 (oops).

블로그 홈 페이지에는 기본 관리자 화면에 대한 링크가 있고 기본 관리자 화면에는 각 레코드에 대한 삭제 링크가 있습니다 (확인 없음).

어느 날 데이터베이스의 모든 레코드가 삭제되었습니다 (수백 개의 개인 항목). 일부 독자가 사이트를 침입하여 모든 레코드를 악의적으로 삭제했다고 생각했습니다.

Google Bot이 사이트를 크롤링하고 관리 링크를 따라 갔으며 모든 삭제 링크를 따라가 데이터베이스의 모든 레코드를 삭제했습니다. Google Bot에 의해 올해 올해의 Dumbass 상을받을 자격이 있다고 생각했습니다.

고맙게도 백업이있었습니다.


13
그것이 얼마나 흔한 실수인지 보여줍니다.
si618

96
따라서 작업 변경을 위해 항상 POST해야합니다.
재귀

7
@recursive : true이지만 디렉토리가 비밀번호로 보호되지 않은 경우 사람이 모든 것을 삭제하는 것을 멈추지 않습니다.
DisgruntledGoat

2
링크를 프리 페치하는 브라우저 플러그인에서이 문제가 발생했습니다. 한 번 블로그 사이트에서 일한 적이 있는데, 한 사용자가 자신의 블로그에 대한 모든 의견이 신비롭게 사라질 것이라고 며칠 동안 당황했습니다.
Matthew

7
아닙니다. 그 상을받을 자격이 없었습니다. 이런 일이 있었다면 당신은 그럴 자격이있는 것입니다 그리고 당신은 하지 않았다 백업을해야합니다.
Ryan Lundy

187

내가 본 최악의 구멍은 빈 사용자 이름과 암호를 지정하면 관리자로 로그인 할 수있는 웹 응용 프로그램의 버그였습니다. :)


144
게으른 개발자를위한 버그 또는 기능? :)
si618

9
나는 그런 코드를 보았다. "SELECT * FROM [User] 여기서 UserName LIKE '%"+ userName + "%'"와 같이 사용자 조회에서 LIKE를 사용하기 때문입니다. 관리자는 일반적으로 데이터베이스의 첫 번째 사용자이므로 해당 사용자를 반환합니다.
Pierre-Alain Vigeant

11
왜 사용자 이름과 함께 LIKE 할 것 내가 아담 입력, 표준 때 ... 그래서 타이핑 ADM에 의해 관리 될 수 있을까?
마태 회칠 한

20
대부분의 회사는 계정을 잠그기 전에 주어진 사용자 ID로 로그인을 3 번 시도합니다. 그래서 누군가 잠글 하찮게 쉽게 를 elses이 세 가지 잘못된 암호로 계정.
David R Tribble

3
LDAP 디렉토리에 대해 인증하는 많은 회사 웹 응용 프로그램에서 이것을 보았습니다. LDAP에서 빈 비밀번호는 익명 로그인에 성공 합니다. 익명 사용자는 많은 것을 할 수 없지만이 메커니즘을 사용하는 웹앱은 확인하는 데까지 걸리지 않습니다. "성공 = 올바른 비밀번호"라고 가정합니다!
SimonJ

174

일단 웹 사이트의 URL에서 이것을 발견했습니다.

http://www.somewebsite.com/mypage.asp?param1=x&param2=y&admin=0

마지막 매개 변수를 admin = 1로 변경하면 관리자 권한이 부여되었습니다. 당신이 맹목적으로 사용자 입력을 믿으려면 최소한 당신이하고있는 것을 전보하지 마십시오!


19
편리한 기능입니다.) WarGames를 보지 못했습니까? "좋은 개발자라면 누구나 자신의 시스템에 백도어를 추가합니다"와 같은 것이 있습니다.
alex

38
아마도 그들은 & admin = JOSHUA
JohnFx를 사용했을 것입니다.

165

나는 이것을 매일 WTF 에서 보았다 .

<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
    if (form.id.value=="buyers") { 
        if (form.pass.value=="gov1996") {              
            location="http://officers.federalsuppliers.com/agents.html" 
        } else {
            alert("Invalid Password")
        }
    } else {  
        alert("Invalid UserID")
    }
}
//-->
</script>

이 IMHO를 이길 수있는 것은 없습니다.


21
나는 이것이 당신이 생각하는 것처럼 어리석지 않다고 생각합니다. 이 사소한 암호는 "예, 연방 정부에서 온"단추와 같이 작동 할 수 있습니다.이 암호를 잘못 사용하려고하는 사람이 잡히면 "잘못된 자격 증명 제공"(또는 그들이 어떻게 전화를 거는가)에 대해 기소 될 수 있다는 차이점이 있습니다. )
ilya n.

29
ilya : Javascript이므로 사용자가 볼 수 있습니다. 그것을 본 후에는 모든 종류의 제어를 무시 하고 officers.federalsuppliers.com/agents.html 로 이동할 수 있습니다 .
Alsciende

68
웹 사이트의 저작권이있는 한 DMCA는 100 % 보호 기능을 제공합니다. Javascript를 "우회"할 수 없습니다.
Steve Hanov

13
@Steve Hanov : "우회"에 대한 흥미로운 정의가 있습니다. 해당 URL을 브라우저에 입력하거나 복사 / 붙여 넣기를하면 ... 아무것도 우회하지 않고 브라우저를 사용하여 주소 표시 줄에 넣은 주소 웹 브라우저의 의도 된 목적 중 하나입니다.
Powerlord

46
축하, 당신은 너무 나쁜 그 배심원 설득 300K 비용, 결백
더스틴 겟츠

141

대학교에서 이름없는 채로 남아있을 것입니다. 그들은 모든 행동 쿼리가 양식 게시 대신 URL을 통해 전달되었습니다.

구글 봇 (Google Bot)이 와서 모든 URL을 통해 데이터베이스를 정리할 때까지 문제가 해결되었습니다.


18
디자인에 의한 오래된 SQL 인젝션. "기능"이 내장 된보고 기능을 사용했습니다.
ICodeForCoffee

18
@ ICodeForCoffee : SQL 주입은 어디에 있습니까? 이것은 GET 대 POST의 목적을 혼란스럽게합니다. 초보 웹 개발자는 상당히 일반적인 실수입니다. 이 정확한 문제에 대한 Daily WTF 기사를 읽은 것을 기억합니다.
rmeador

Wikipedia에이 문제가있는 경우 초기 버전이 아니 었습니까? 그들은 편집 또는 무언가를 되돌릴 링크가있었습니다.
DisgruntledGoat

14
여기서 실제 문제는 Googlebot이 인증하지 않고 데이터베이스를 지울 수 있다는 것입니다.
MiffTheFox

34
그들이 Google 캐시에서 검색 할 수 있기를 바랍니다.
fastcodejava

137

아무도 사회 공학을 제기하지 않았지만 이 기사에서 쫓겨났습니다. .

요약 : 악의적 인 사용자는 수십 개의 플래시 드라이브를 구입하여 자동 실행 바이러스 또는 트로이 목마를로드 한 다음 밤 늦게 회사 주차장에 플래시 드라이브를 뿌릴 수 있습니다. 다음날, 모두가 일하러 가고, 반짝이고, 사탕 모양의, 저항 할 수없는 하드웨어를 우연히 발견하고 "오, 와우, 무료 플래시 드라이브, 무슨 일인지 궁금합니다!" -20 분 후 회사의 전체 네트워크에 호스가 연결되었습니다.


69
자동 실행은 악하다.
Mark Ransom

22
@mmyers : 플래시 드라이브 금지는 좋은 방법이 아닙니다. 자동 실행 / 자동 재생을 중단하십시오.
Jay

10
플로피 디스크 시간에서 또 다른 접근 방식을 읽어보십시오. 사무실 복도에서 "Accounting data-secret"레이블이 붙은 부팅 감염 플로피 디스크를 사용하고 5 분 동안 기다립니다. 꼼짝 못하게 하는!
로드리고

13
운 좋게도, 나는 항상 Linux Live CD로 부팅하여 그곳에서 플래시 드라이브를 검사 할 수 있습니다.
David Thornley

6
@Jay-불행히도, 얼마나 많은 사람들이 파일을보고 "그들이 무엇을하는지보기 위해"두 번 클릭합니까? 사람들은 생각하지 않기 때문에 금지는 여러 번 필요합니다.
JasCav


103

Microsoft Bob
(크레딧 : Dan의 20 세기 Abandonware )

암호를 세 번 잘못 입력하면 암호를 잊었는지 묻는 메시지가 나타납니다.

http://img132.yfrog.com/img132/8397/msbob10asignin15.gif

그러나 비밀번호를 입력 할 때까지 올바른 비밀번호를 묻는 메시지를 계속 표시하거나 여러 번의 잘못된 시도 후에 잠금을 해제하는 등 보안을 유지하는 대신 새 비밀번호를 입력하면 원래 비밀번호가 대체됩니다! 누구나 "보호 된"Microsoft Bob 계정 암호로이 작업을 수행 할 수 있습니다.

사전 인증이 필요하지 않습니다. "User1은 암호를 세 번 잘못 입력 한 다음 네 번째로 새 암호를 입력하여 자신의 암호를 변경할 수 있습니다."암호 변경 "을 사용하지 않아도됩니다.

또한 User1이 User2, User3 ...의 암호를 정확히 같은 방식으로 변경할 수 있음을 의미합니다. 모든 사용자는 다른 사용자의 암호를 세 번 잘못 입력 한 다음 메시지가 표시되면 새 암호를 입력하여 계정에 액세스 할 수 있습니다.

http://img132.yfrog.com/img132/9851/msbob10asignin16.gif


7
이것은 컴퓨터가 도메인에 의해 관리되지 않을 때 Windows 자체와 동일합니다. Windows Vista Ultimate에서도 언제든지 암호를 재설정 할 수 있습니다. 서비스 거부는 무단 액세스보다 더 큰 위협으로 간주됩니다. 특히 어쨌든 드라이브를 다시 마운트하면 대부분의 물건을 얻을 수 있기 때문에. 이 경우 암호의 목적은 예방보다는 침입 탐지를 위한 것이라고 생각합니다 .
Jeffrey L Whitledge

1
@Jeffrey : 검은 모자가 물리적으로 접근하면 거의 "게임 오버"입니다. 이를 방지하려면 심각한 암호화 (하드웨어 및 소프트웨어 키로거 등을 스캔하는 방법 등)가 필요합니다.
David Thornley

8
나보다 현명한 사람은 이것이 좋은 위협 모델링이라고 지적했습니다. 'Bob'은 네트워크에 연결되지 않은 시대에 가정용으로 사용되었으며 일부 도둑보다 여동생이나 숙취로 도스를 겪을 가능성이 더 컸습니다. Bob은 이전 비밀번호가 더 이상 작동하지 않아 계정에 액세스했지만 더 이상 시도하지 않았다는 사실을 알려줍니다.
bgiles

20
아내가 방금 이것을보고있는 것을 보았습니다 ... 그녀 : "오 세상에! 어떤 프로그램입니까?!" 나 : "... Microsoft Bob?" 그녀 : "저는 Microsoft Bob을 좋아했습니다 !" 한숨 ...
Tim Goodman

10
@ChristianWimmer-사람들에게 "Parachute"라고 표시된 배낭을주는 것과 같은 소리가 들리므로 배낭에 느낌이 들지 만 낙하산이 없다고 말하지 않습니다.
JohnFx

102

나는 Joe X의 전 집 주소를 가졌으며 같은 도시에서 그의 최신 주소를 알아야했지만 연락 할 방법이 없었습니다. 나는 그가 매일 매일 주문하는 우편 주문 카탈로그를 받고 있다고 생각했기 때문에 See 's Candies에 대해 800 번호를 임의로 불렀습니다 (빅토리아의 비밀, 스위스 식민지 또는 다른 큰 우편물과는 반대).

나 : "안녕하세요, 나는 조 엑스입니다. 당신이 저의 이전 주소와 새 주소 모두에서 메일 링리스트에 두 번 도착했다고 생각합니다. 컴퓨터가 [오래된 주소] 또는 [가짜 주소]에 나에게 표시됩니까? ? "

운영자 : "아니요, [새 주소]에 표시됩니다."


36
아, 사회 공학을 좋아해야 해요. 보안의 인간적 측면은 일반적으로 가장 약합니다.
EMP

영국에서는 "
Flexo

95

주기 = 1 1 텍스트 상자의에서 모든 사용자 목록 시스템의가.


325
바비 테이블에서 인사.
Gumbo

4
@Gumbo의 의견은 답변보다 4 배나 많이 찬성 될 수 있습니까?
Lie Ryan

12
간단히, 질문에 투표 한 사람들의 4 배가 그의 의견에 투표했다 : /
RobertPitt

4
Bobby Tables 의견 221 명 중 한 명은 우리에게 나머지 Bobby Tables가 무엇인지 말해 줄까요?
kirk.burleson

15
@ kirk.burleson : xkcd.com/327
gspr

76

생활을위한 응용 프로그램 보안 컨설턴트이기 때문에 웹 사이트에서 관리자를 통해 무언가를 통해 얻을 수있는 일반적인 문제가 많이 있습니다. 그러나 정말 멋진 부분은 백만 달러 상당의 양말을 살 수있는 시점입니다.

이 공연에서 일하는 것은 내 친구 였지만 지금 가장 인기있는 온라인 서적 (및 기타 모든) 상점의 항목 가격은 HTML 자체에 숨겨진 필드로 저장되어 있다는 것이 가장 큰 장점이었습니다. 초기에는이 버그에 많은 온라인 상점이 있었지만 웹을 찾기 시작했습니다. 보안에 대한 인식이 거의 없습니다. 누가 HTML을 다운로드하고 숨겨진 필드를 편집하고 주문을 다시 제출할 것입니까?

당연히 우리는 가격을 0으로 바꾸고 백만 쌍의 양말을 주문했습니다. 가격을 마이너스로 변경할 수도 있지만 이로 인해 백엔드 청구 소프트웨어 버퍼 오버 플로우로 인해 트랜잭션이 종료됩니다.

다른 것을 선택할 수 있다면 웹 응용 프로그램의 경로 표준화 문제 일 것입니다. foo.com?file=../../../../etc/passwd를 수행 할 수 있다는 것은 멋진 일입니다.


9
굉장한 왼 양말은 절대 다시는 없을 것입니다!
si618

75
양말 봤어?
Alex Barrett

32
주문이 완료되었으며 주문 처리 시스템이 창고에 경고했습니다. 우리는 아마도 그것이 효과가 있다는 것을 깨달았고 우리의 연락 담당자에게 주문을 중단해야한다고 말했습니다. 약간 나중에 창고 관리자가 주문이 진짜인지 확인하도록 요청했습니다. 그는 그것이 소프트웨어 오류라는 것을 현명하게 생각했다.
Collin

27
물론 @StuperUser.
Strager

12
스토리지에 아무런 문제가 없습니다. Ikea 웹 사이트를 해킹하여 서랍 10 만 세트를 주문하십시오.
Neil Aitken

64

데이터베이스 루트 암호를 실수로 소스 제어에 커밋합니다. Sourceforge의 소스 제어이기 때문에 꽤 나빴습니다.

말할 필요도없이 암호가 매우 빠르게 변경되었습니다.


144
좋아, 암호는 매우 빠르게 바뀌었지만 ... 누구에 의해 ?
Eamon Nerbonne

1
이 길을 갔다 예를 들어 django와 같은 많은 시스템은 DB 암호를 설정 파일에 넣으라고 요청하기 때문에 실제로 이것을 권장합니다. 자연스럽게 체크인하기가 매우 쉽습니다.
mlissner

56

주요 IT 직원이 회사를 떠날 때 관리자 암호를 변경하지 않습니다.


1
또는 관리자 / 관리자 (및 특히 하드웨어에서)와 같이 공장 기본값을 유지하는 경우 ...
Gnark

47
내가 디렉토리 내가 졸업 한 후 그들은 나를 위해 더 높은 수준의 작업을 생성하고 말해와 함께 중독 된 후 대학을 떠났지만 그는 그들이 있었다 내 매니저 말했다에서 나중에 발견 - 나는 하나 더있어 하지 로를 저를 승진 시키십시오. 말할 것도없이, 나는 그것에 대해 행복하지 않았다. 관리자에게 액세스 권한이있는 모든 비밀번호 를 변경하도록 구체적으로 지시 했습니다. 내가 떠나고 일주일 후, 나는 관리자에게 '필요한 경우를 대비하여'루트 암호를 가진 이메일을받습니다. 나는 뭔가 잘못되었을 때 넘어지지 않기를 원하기 때문에 sysadmin에게 다시 변경되었는지 확인하기 위해 연락했다.
Joe

10
@Sophomore : 나는 맨해튼 프로젝트 비밀을 보관하고있는 거대하고 매우 안전한 금고가 기본 조합으로 남아 있다고 Feynman의 전기에서 그를 회상합니다.
Brian

12
소련 스파이가 금고에 도착하여 금고를 깨뜨 리려고 생각할 수있는 모든 것을 시도하는 것을 상상할 수 있습니다. "아빠! 나는 그것을 깨뜨릴 수 없습니다. 어머니 러시아를 위해! "
Eric

3
이 글을 읽는 동안 미소를 지을 수 없었던 저는 여름에 유명한 스웨덴 회사에서 IT 기술자로 일하고 있었고 몇 년 후 엔지니어로 일하기 위해 돌아 왔을 때 소프트웨어를 설치하는 데 문제가있었습니다. 파란색에서 나는 이전 관리자 암호와 짜잔을 기억했습니다! 그것은 일했다 =)
Viktor Sehr

50

이것은 내가 본 것 중 최악의 보안 구멍은 아니지만. 그러나 이것은 내가 스스로 발견 한 최악의 상황입니다.

성공적인 오디오 북 온라인 상점은 쿠키를 사용하여 인증 후 현재 사용자의 식별 정보를 저장했습니다. 그러나 쿠키에서 사용자 ID를 쉽게 변경하고 다른 계정에 액세스하여 구입할 수 있습니다.


와우 ... 내가 상속 한 ASP 코드에서 정확한 일이 발생했습니다.
Radu094 2009

이 정확한 문제가있는 앱을 유지 관리합니다. 수정 목록에서 상위에 있습니다. 고맙게도 전자 상거래 사이트가 아닙니다.
quentin-starin

12
이것은 대부분의 사람들이 알고있는 것보다 더 자주 발생합니다.
NotMe

47

.com 시대가 시작 되 자마자 저는 해외 대형 소매점에서 일하고있었습니다. 우리는 경쟁 업체가 몇 달 전에 온라인 상점을 시작함에 따라 큰 관심을 보았습니다. 물론, 우리는 시도해 보았습니다 ... 그리고 우리의 쇼핑 카트가 섞여 있음을 빨리 깨달았습니다. 쿼리 문자열을 약간 사용한 후 서로의 세션을 가로 챌 수 있음을 깨달았습니다. 타이밍이 좋으면 배송지 주소를 변경할 수 있지만 결제 방법을 그대로 둘 수 있습니다. 장바구니에 원하는 항목을 채운 후에는 모든 방법을 사용할 수 있습니다.


물론, 이것은 당신이 실제로 그렇게한다면 사기로 상품을 보내도록 악의적으로 행동했다는 것을 의미하고 주소를 "그들"에게 말했다.
David Thornley

6
그렇습니다. 이것이 주요 보안 허점입니다. 실제로 구매 버튼을 누르지는 않았지만 가질 수있었습니다. 뉴스 보도에 따르면 일부 사람들은 그렇게했습니다.
Eric J.

45

내가 현재 근무중인 회사에 처음 입사했을 때 상사는 새로운 고객의 기존 전자 상거래 웹 사이트를 살펴 보았습니다. 이것은 IIS와 전자 상거래 모두 초기 단계였으며 보안은 엄격하지 않았습니다.

간단히 말해서, 그는 호기심으로 URL을 변경하고 디렉토리 탐색이 해제되지 않았다는 것을 깨달았습니다. 따라서 URL 끝에서 페이지 이름을 잘라내어 파일의 모든 파일을 볼 수 있습니다. 웹 서버.

우리는 다운로드 한 Access 데이터베이스가 들어있는 폴더를 찾아 보았습니다. 수천 개의 암호화되지 않은 신용 카드 번호로 가득 찬 전체 전자 상거래 고객 / 주문 데이터베이스였습니다.


1
이것은 거의 12 년 전 데이터 중심 웹 사이트가 최첨단의 참신했던시기였습니다. 핵심 비즈니스에 '비공개'로 여겨지는 것에 대해 SQL Server 라이센스에 투자하려는 사람은 아무도 없었기 때문에 많은 사이트가 Access 또는 이와 유사한 사이트를 상대로 실행되었습니다. 상황이 어떻게 바뀌 었습니까!
Mark Bell


44

13 살 때 학교는 학생들을위한 소셜 네트워크를 열었습니다. 불행히도 나는 URI를 "? userID = 123"과 같은 다른 userID로 변경하고 해당 사용자에 로그인 할 수있는 보안 버그를 발견했습니다. 분명히 나는 ​​친구들에게 말했고, 결국 학교 소셜 네트워크에는 포르노가 가득했습니다.

그래도 권장하지 않습니다.


3
왜 이것을 추천하지 않습니까? 어떻게 된 거예요?
Simon_Weaver

55
@Simon_Weaver : 13 살짜리 아이들은 보통 포르노 맛이 좋지 않다고 생각합니다.
슬랙 커

@slacker +1로 1000 명의 담당자를 만나세요! 난 평가 의견이 당신에게 담당자를 제공한다고 생각하지 않는 것을 제외하고 :
Simon_Weaver

2
"포르노 맛이 좋다"-옥시 모론이있다.
Zann Anderson

43

수퍼 유저 액세스를위한 빈 사용자 이름 / 암호 필드가 훨씬 최악이라고 생각합니다. 하지만 내가 본 것은

if (password.equals(requestpassword) || username.equals(requestusername))
{
    login = true;
}

한 명의 운영자가 너무 나쁜 것은 그러한 큰 차이를 만듭니다.


10
와우, 나는 자연적으로 그것을 고치기위한 강박 관념이있다
wag2639

해시 대신 실제 암호가 사용된다는 사실도 실제로 나쁘다.
Peter Kriens

처음에 나는 "무슨 일이야?", 그리고 나는 "AAAAaaaaaaaAAAA! OMG"
Bojan Kogoj

42

내 고객 인 은행을위한 것입니다. 로그온 할 수 없어 고객 서비스 센터에 연락했습니다. 그들은 사용자 이름과 다른 것을 요구하지 않았습니다. 보안 관련 질문이나 신원 확인을 시도하지 않았습니다. 그런 다음 파일에 저장된 이메일 주소로 비밀번호 재설정을 전송하는 대신 전송할 이메일 주소를 묻습니다. 파일에있는 것과 다른 주소를 제공하여 비밀번호를 재설정 할 수있었습니다.

기본적으로 해커에게 필요한 것은 내 사용자 이름이며 내 계정에 액세스 할 수 있습니다. 이것은 미국의 사람들 중 적어도 90 %가 들어 본 주요 은행을위한 것이 었습니다. 이것은 약 2 년 전에 일어났습니다. 제대로 훈련되지 않은 고객 서비스 담당자인지 아니면 표준 절차인지 모르겠습니다.


22
그리고 어떤 은행입니까?
TigerTiger

5
@Si : '고객이 ...'라고 쓴다. 나는 그것이 그 질문에 대한 답이라고 생각합니다. :)
ShdNx

8
이것은 FDIC에 의해 압류되어 올해 초 체이스에 팔린 워싱턴 뮤추얼이었다. 또한 이상한 오류 메시지가있었습니다. 임시 비밀번호를 사용하여 비밀번호를 설정하려고 할 때 비밀번호가 동일하고 복사 / 붙여 넣기를해도 "비밀번호가 일치하지 않습니다"라는 오류가 계속 발생합니다. 유효하지 않은 문자를 말하는 대신 슬래시와 같이 "유효하지 않은 문자"를 넣으면 다른 메시지가 표시됩니다.
Sean

11
@Elizabeth : 음 ... 피싱을 막는다는 것을 알고 있습니까? 누군가가 은행 웹 사이트를 복사하거나 모방하려고 시도하면 정확히 동일하게 보일 수 있지만 아마도 데이터베이스에 액세스 할 수 없으므로 올바른 보안 그림을 가져올 수 없습니다. 이것이 바로 그 이유입니다. 모든 사용자는 (유사 허풍 수 있습니다)에 인증서를 확인하는 스마트 충분
mpen

13
당신의 금융 계정을 보호하는 것은 과잉입니까? ...
Joe Phillips

36

내가 만든 것을 공유하겠습니다. 거의.

몇 년 전, 제가 일하고 있던 회사는 ASP 웹 사이트에서 인덱싱을 원했습니다. 그래서 인덱스 서버를 설정하고 몇 개의 관리 디렉토리를 제외하고 모두 좋았습니다.

그러나 누군가는 영업 사원에게 웹 서버에 대한 ftp 액세스 권한을 부여하여 집에서 일할 수있게 해주었습니다. 전화를 거는 날이었고 파일을 교환하는 가장 쉬운 방법이었습니다. ... 서비스에 대한 마크 업을 자세히 설명하는 문서를 포함합니다. 인덱스 서버는 사람들이 "비용"을 검색 할 때 색인을 생성하고 서비스를 시작합니다.

블랙리스트가 아닌 화이트리스트를 기억하십시오.


76
"블랙리스트가 아닌 화이트리스트"는 종종 훌륭한 조언이지만 여기서 배우는 올바른 교훈은 아닙니다. 올바른 교훈은 "공개 서버에 개인 정보를 저장하지 마십시오"입니다. 또한 "영업 사원이 서버에 액세스하지 못하게하십시오".
rmeador

7
아, 대답과 아바타 사이의 조화.
Çağdaş Tekin 2016 년

35

가장 단순하면서도 비용이 많이 드는 가치 중 하나는 다음과 같습니다.

PayPal 과 같은 엔진을 사용하는 결제 시스템 지불이 성공한 후 PayPal의 응답이 제대로 확인되지 않아 결함이있을 수 있습니다.

예를 들면 다음과 같습니다.

CD 구매 웹 사이트로 이동하여 장바구니에 내용을 추가 한 다음 결제 단계에서 일반적으로 페이지에 페이팔 필드가 채워진 양식과 "지불"에 대한 제출 버튼이 있습니다.

DOM 편집기를 사용하여 "live"형식으로 이동하여 값을 £899.00에서£0.01 한 다음 제출 ...을 클릭하십시오.

내가 PayPal 측에있을 때 금액이 1 페니임을 알 수 있으므로 PayPal은 일부 매개 변수를 초기 구매 사이트로 리디렉션합니다. payment_status=1 하지만 그렇지 않습니다. 지불 금액을 확인하십시오.

충분한 로깅이 없거나 제품이 자동으로 발송되면 비용이 많이들 수 있습니다.

최악의 사이트는 응용 프로그램, 소프트웨어, 음악 등을 제공하는 사이트입니다.


12
+1 동의 함. 호스팅 된 결제 페이지 상황에서 원래 웹 사이트는 사용자가 값을 게시하도록 허용해서는 안됩니다. 대신 사용자가 클릭하면 페이지가 다시 게시되고 서버는 적절한 값을 사용하여 직접 지불 "게이트웨이"에 대한 게시물을 발송합니다. 그것은 모두 게이트웨이가 기대하는 것과 상호 작용을 수행하는 방법에 달려 있지만 설명 한 것보다 더 안전한 시나리오가없는 소금의 가치가있는 게이트웨이는 볼 수 없습니다. 어쩌면 내가 틀렸을 수도 있습니다.
John K

서버 측을 통한 게시 요청을 모방하여 게이트웨이로 전송되는 데이터가 정확한지 확인한 다음 위치 헤더로 리디렉션 할 수있는 방식으로 데이터를 전송할 수 있습니다.
RobertPitt

PayPal에는 사이트에서이를 방지 할 수있는 암호화 옵션이 있습니다. 이 사이트는 데이터를 먼저 게시하고, 주문 데이터를 서버 측과 PayPal에 알려진 키로 암호화 한 다음 해당 데이터를 PayPal로 보내 해독합니다. 암호화되지 않은 주문 데이터는 그런 식으로 양식 필드에 전송되지 않습니다. 그것은 단지 옵션 일 뿐이므로 PayPal을 사용하는 모든 사이트가 그렇게하지는 않습니다. 그래도 그들은해야합니다!
mikel

35

기억할 수있는 모든 보안 권한을 설정할 수있는 온라인 문서 관리자는 어떻습니까?

다운로드 페이지에 도달 할 때까지는 ... download.aspx? documentId = 12345

예, documentId는 데이터베이스 ID (자동 증가)이며 모든 단일 번호를 반복 할 수 있으며 모든 회사 문서를 얻을 수 있습니다.

이 문제에 대해 경고를 받으면 프로젝트 관리자의 응답은 다음과 같습니다. 감사합니다. 그러나 아무도 이것을 이전에 눈치 채지 못 했으므로 그대로 유지합시다.


56
나는 그 태도가 정말 싫어서 몇 번이나 받고있었습니다. 수업을 가르치기 위해 다른 사람들이 그렇게하도록하고 싶습니다.
syaz

나는 마지막 직장에서 이런 구멍을 채우기 위해 마침내 몇 달 동안 불만을 제기했습니다.
eyelidlessness

그렇게 할 수있는 웹 사이트를 찾는 것은 드문 일이 아닙니다. 최근 기사 나 보관 된 기사의 디렉토리가 표시되지만 로그인하지 않아도 한두 페이지보다 더 많이 목록으로 돌아갈 수 없습니다. 첫 번째 기사를 열고 url의 올바른 매개 변수를 게시물로 변경하십시오. 기사를 보려는 번호입니다.
bob-the-destroyer

2
여기 좋은 예가 있습니다. 이 NY Times 기사 : nytimes.com/2009/01/14/dining/14power.html?_r=1&ref=din 그림에 표시된 그림은 훨씬 더 재미있는 원본 버전을 대체하는 것으로 여전히 여기에 있습니다 : graphics8.nytimes.com /images/2009/01/14/dining/14power2_650.jpg
Jamie Treworgy

34

노르웨이 피자 배달에는 새롭고 반짝이는 인터넷 포털에서 부정적인 양의 피자를 주문 하여 무료로 구할 수있는 보안 구멍이있었습니다 .


42
다른 보안 구멍은 직원입니까? "컴퓨터에 15 개의 피자가 무료로 제공된다고 말 했으니 .. 여기 요!"
Nathan Long

6
... 피자 장소도 DVD를 제공합니까? Oo
mpen

5
전 피자 운전사로서 ... 아니, 우리는 그런 종류의 물건에 대해 쥐 엉덩이를주지 않았습니다. 우리 관리자도 마찬가지였습니다.
eyelidlessness

48
배달원 이 피자를 파는 피자 를 수집 하지 않겠습니까 ?
Jon B

7
와우 .. 배달원이 당신에게 팁을 주어야 했어요? =))
Andrei Rînea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.